From: Hai Zhang Date: Thu, 28 Feb 2019 21:36:53 +0000 (-0800) Subject: Migrate all default app shortcut preference to use roles. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3064ca585ea3ec94fa1acd80df0a4ed9b3a4d398;p=android-x86%2Fpackages-apps-Settings.git Migrate all default app shortcut preference to use roles. Bug: 124452117 Test: build Change-Id: I19375dc21bfcd932a263c49330dc9a040a446beb --- diff --git a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java index 20169d8706..b056b2042b 100644 --- a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java +++ b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java @@ -18,7 +18,6 @@ import android.app.role.RoleManager; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; -import android.os.Bundle; import android.os.UserManager; import android.permission.PermissionControllerManager; import android.text.TextUtils; @@ -28,10 +27,7 @@ import androidx.preference.PreferenceScreen; import com.android.internal.util.CollectionUtils; import com.android.settings.R; -import com.android.settings.SettingsActivity; -import com.android.settings.applications.DefaultAppSettings; import com.android.settings.core.BasePreferenceController; -import com.android.settings.core.SubSettingLauncher; /* * Abstract base controller for the default app shortcut preferences that launches the default app @@ -58,22 +54,13 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre mRoleManager = context.getSystemService(RoleManager.class); - // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated. - if (mRoleName != null) { - final PermissionControllerManager permissionControllerManager = - mContext.getSystemService(PermissionControllerManager.class); - permissionControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName, - mContext.getMainExecutor(), qualified -> { - mAppQualified = qualified; - refreshAvailability(); - }); - } - } - - // TODO: STOPSHIP(b/110557011): Remove this once we have all default apps migrated. - public DefaultAppShortcutPreferenceControllerBase(Context context, String preferenceKey, - String packageName) { - this(context, preferenceKey, null /* roleName */, packageName); + final PermissionControllerManager permissionControllerManager = + mContext.getSystemService(PermissionControllerManager.class); + permissionControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName, + mContext.getMainExecutor(), qualified -> { + mAppQualified = qualified; + refreshAvailability(); + }); } @Override @@ -98,7 +85,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre if (mContext.getSystemService(UserManager.class).isManagedProfile()) { return DISABLED_FOR_USER; } - return hasAppCapability() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; + return mAppQualified ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override @@ -112,49 +99,20 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre if (!TextUtils.equals(mPreferenceKey, preference.getKey())) { return false; } - // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated. - if (mRoleName != null) { - final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP) - .putExtra(Intent.EXTRA_ROLE_NAME, mRoleName); - mContext.startActivity(intent); - } else { - final Bundle bundle = new Bundle(); - bundle.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mPreferenceKey); - new SubSettingLauncher(mContext) - .setDestination(DefaultAppSettings.class.getName()) - .setArguments(bundle) - .setTitleRes(R.string.configure_apps) - .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN) - .launch(); - } + final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP) + .putExtra(Intent.EXTRA_ROLE_NAME, mRoleName); + mContext.startActivity(intent); return true; } /** - * Check whether the app has the default app capability - * - * @return true if the app has the default app capability - */ - protected boolean hasAppCapability() { - // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated. - if (mRoleName != null) { - return mAppQualified; - } - return false; - } - - /** * Check whether the app is the default app * * @return true if the app is the default app */ - protected boolean isDefaultApp() { - // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated. - if (mRoleName != null) { - final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders( - mRoleName)); - return TextUtils.equals(mPackageName, packageName); - } - return false; + private boolean isDefaultApp() { + final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders( + mRoleName)); + return TextUtils.equals(mPackageName, packageName); } } diff --git a/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java b/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java index 4c7dd819ce..d554620010 100644 --- a/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java @@ -14,10 +14,8 @@ package com.android.settings.applications.appinfo; +import android.app.role.RoleManager; import android.content.Context; -import android.os.UserHandle; - -import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController; public class DefaultBrowserShortcutPreferenceController extends DefaultAppShortcutPreferenceControllerBase { @@ -25,19 +23,6 @@ public class DefaultBrowserShortcutPreferenceController private static final String KEY = "default_browser"; public DefaultBrowserShortcutPreferenceController(Context context, String packageName) { - super(context, KEY, packageName); - } - - @Override - protected boolean hasAppCapability() { - return DefaultBrowserPreferenceController - .hasBrowserPreference(mPackageName, mContext, UserHandle.myUserId()); + super(context, KEY, RoleManager.ROLE_BROWSER, packageName); } - - @Override - protected boolean isDefaultApp() { - return new DefaultBrowserPreferenceController(mContext) - .isBrowserDefault(mPackageName, UserHandle.myUserId()); - } - } diff --git a/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java b/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java index f0c1b8aec1..bd467ac411 100644 --- a/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java @@ -14,27 +14,15 @@ package com.android.settings.applications.appinfo; +import android.app.role.RoleManager; import android.content.Context; -import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController; - public class DefaultEmergencyShortcutPreferenceController extends DefaultAppShortcutPreferenceControllerBase { private static final String KEY = "default_emergency_app"; public DefaultEmergencyShortcutPreferenceController(Context context, String packageName) { - super(context, KEY, packageName); - } - - @Override - protected boolean hasAppCapability() { - return DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, mContext); + super(context, KEY, RoleManager.ROLE_EMERGENCY, packageName); } - - @Override - protected boolean isDefaultApp() { - return DefaultEmergencyPreferenceController.isEmergencyDefault(mPackageName, mContext); - } - } diff --git a/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java b/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java index a58ef85200..beb2d7e5b9 100644 --- a/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java @@ -14,28 +14,15 @@ package com.android.settings.applications.appinfo; +import android.app.role.RoleManager; import android.content.Context; -import com.android.settings.applications.defaultapps.DefaultHomePreferenceController; - public class DefaultHomeShortcutPreferenceController extends DefaultAppShortcutPreferenceControllerBase { private static final String KEY = "default_home"; public DefaultHomeShortcutPreferenceController(Context context, String packageName) { - super(context, KEY, packageName); - } - - @Override - protected boolean hasAppCapability() { - return DefaultHomePreferenceController.hasHomePreference(mPackageName, mContext); + super(context, KEY, RoleManager.ROLE_HOME, packageName); } - - @Override - protected boolean isDefaultApp() { - return DefaultHomePreferenceController.isHomeDefault(mPackageName, - mContext.getPackageManager()); - } - } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java index 89beede13a..f3f4ca6f1f 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java @@ -34,8 +34,6 @@ import android.permission.PermissionControllerManager; import androidx.preference.Preference; import com.android.settings.R; -import com.android.settings.SettingsActivity; -import com.android.settings.applications.DefaultAppSettings; import org.junit.Before; import org.junit.Test; @@ -73,7 +71,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { private ShadowUserManager mShadowUserManager; private TestRolePreferenceController mController; - private TestLegacyPreferenceController mLegacyController; @Before public void setUp() { @@ -86,7 +83,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { mShadowUserManager = shadowOf(mActivity.getSystemService(UserManager.class)); mController = new TestRolePreferenceController(mActivity); when(mPreference.getKey()).thenReturn(mController.getPreferenceKey()); - mLegacyController = new TestLegacyPreferenceController(mActivity); } @Test @@ -141,8 +137,8 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { when(mRoleManager.getRoleHolders(eq(TEST_ROLE_NAME))).thenReturn(Collections.singletonList( TEST_PACKAGE_NAME)); final CharSequence yesText = mActivity.getText(R.string.yes); - mController.updateState(mPreference); + verify(mPreference).setSummary(yesText); } @@ -150,17 +146,17 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { public void updateState_notRoleHoler_shouldSetSummaryToNo() { when(mRoleManager.getRoleHolders(eq(TEST_ROLE_NAME))).thenReturn(Collections.emptyList()); final CharSequence noText = mActivity.getText(R.string.no); - mController.updateState(mPreference); + verify(mPreference).setSummary(noText); } @Test public void handlePreferenceTreeClick_shouldStartManageDefaultAppIntent() { final ShadowActivity shadowActivity = shadowOf(mActivity); - mController.handlePreferenceTreeClick(mPreference); final Intent intent = shadowActivity.getNextStartedActivity(); + assertThat(intent).isNotNull(); assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MANAGE_DEFAULT_APP); assertThat(intent.getStringExtra(Intent.EXTRA_ROLE_NAME)).isEqualTo(TEST_ROLE_NAME); @@ -172,76 +168,4 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { super(context, TEST_PREFERENCE_KEY, TEST_ROLE_NAME, TEST_PACKAGE_NAME); } } - - // TODO: STOPSHIP(b/110557011): Remove following tests once we have all default apps migrated. - - @Test - public void getAvailabilityStatus_hasAppCapability_shouldReturnAvailable() { - mShadowUserManager.setManagedProfile(false); - mLegacyController.mHasAppCapability = true; - - assertThat(mLegacyController.getAvailabilityStatus()).isEqualTo( - DefaultAppShortcutPreferenceControllerBase.AVAILABLE); - } - - @Test - public void getAvailabilityStatus_noAppCapability_shouldReturnDisabled() { - mShadowUserManager.setManagedProfile(false); - mLegacyController.mHasAppCapability = false; - - assertThat(mLegacyController.getAvailabilityStatus()).isEqualTo( - DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE); - } - - @Test - public void updateState_isDefaultApp_shouldSetSummaryToYes() { - mLegacyController.mIsDefaultApp = true; - final CharSequence yesText = mActivity.getText(R.string.yes); - - mLegacyController.updateState(mPreference); - verify(mPreference).setSummary(yesText); - } - - @Test - public void updateState_notDefaultApp_shouldSetSummaryToNo() { - mLegacyController.mIsDefaultApp = false; - final CharSequence noText = mActivity.getText(R.string.no); - - mLegacyController.updateState(mPreference); - verify(mPreference).setSummary(noText); - } - - @Test - public void handlePreferenceTreeClick_shouldStartDefaultAppSettings() { - final ShadowActivity shadowActivity = shadowOf(mActivity); - - mLegacyController.handlePreferenceTreeClick(mPreference); - final Intent intent = shadowActivity.getNextStartedActivity(); - assertThat(intent).isNotNull(); - assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo( - DefaultAppSettings.class.getName()); - assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS).getString( - SettingsActivity.EXTRA_FRAGMENT_ARG_KEY)).isEqualTo(TEST_PREFERENCE_KEY); - } - - private class TestLegacyPreferenceController - extends DefaultAppShortcutPreferenceControllerBase { - - private boolean mIsDefaultApp; - private boolean mHasAppCapability; - - private TestLegacyPreferenceController(Context context) { - super(context, TEST_PREFERENCE_KEY, TEST_PACKAGE_NAME); - } - - @Override - protected boolean hasAppCapability() { - return mHasAppCapability; - } - - @Override - protected boolean isDefaultApp() { - return mIsDefaultApp; - } - } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java index 65b68aaab4..c2a3b4a8f0 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java @@ -18,15 +18,8 @@ package com.android.settings.applications.appinfo; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; +import android.permission.PermissionControllerManager; import org.junit.Before; import org.junit.Test; @@ -35,57 +28,27 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; - -import java.util.ArrayList; -import java.util.List; +import org.robolectric.shadows.ShadowApplication; @RunWith(RobolectricTestRunner.class) public class DefaultBrowserShortcutPreferenceControllerTest { @Mock - private PackageManager mPackageManager; + private PermissionControllerManager mPermissionControllerManager; - private Context mContext; private DefaultBrowserShortcutPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); - when(mContext.getPackageManager()).thenReturn(mPackageManager); - mController = new DefaultBrowserShortcutPreferenceController(mContext, "Package1"); + ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE, + mPermissionControllerManager); + mController = new DefaultBrowserShortcutPreferenceController(RuntimeEnvironment.application, + "Package1"); } @Test public void getPreferenceKey_shouldReturnDefaultBrowser() { assertThat(mController.getPreferenceKey()).isEqualTo("default_browser"); } - - @Test - public void hasAppCapability_hasBrowserCapability_shouldReturnTrue() { - List resolveInfos = new ArrayList<>(); - resolveInfos.add(new ResolveInfo()); - when(mPackageManager.queryIntentActivitiesAsUser(argThat(intent-> intent != null - && intent.getCategories().contains(Intent.CATEGORY_BROWSABLE)), anyInt(), anyInt())) - .thenReturn(resolveInfos); - - assertThat(mController.hasAppCapability()).isTrue(); - } - - @Test - public void hasAppCapability_noBrowserCapability_shouldReturnFalse() { - assertThat(mController.hasAppCapability()).isFalse(); - } - - @Test - public void isDefaultApp_isDefaultBrowser_shouldReturnTrue() { - when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt())).thenReturn("Package1"); - - assertThat(mController.isDefaultApp()).isTrue(); - } - - @Test - public void isDefaultApp_notDefaultBrowser_shouldReturnFalse() { - assertThat(mController.isDefaultApp()).isFalse(); - } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceControllerTest.java index 9f2ee44294..8466092fa5 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceControllerTest.java @@ -18,17 +18,8 @@ package com.android.settings.applications.appinfo; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import android.app.role.RoleManager; import android.content.Context; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.provider.Settings; -import android.telephony.TelephonyManager; +import android.permission.PermissionControllerManager; import org.junit.Before; import org.junit.Test; @@ -37,62 +28,27 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import org.robolectric.shadows.ShadowApplication; @RunWith(RobolectricTestRunner.class) public class DefaultEmergencyShortcutPreferenceControllerTest { @Mock - private RoleManager mRoleManager; - @Mock - private PackageManager mPackageManager; + private PermissionControllerManager mPermissionControllerManager; - private Context mContext; private DefaultEmergencyShortcutPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); - when(mContext.getPackageManager()).thenReturn(mPackageManager); - when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager); - mController = new DefaultEmergencyShortcutPreferenceController(mContext, "Package1"); + ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE, + mPermissionControllerManager); + mController = new DefaultEmergencyShortcutPreferenceController( + RuntimeEnvironment.application, "Package1"); } @Test public void getPreferenceKey_shouldReturnDefaultEmergency() { assertThat(mController.getPreferenceKey()).isEqualTo("default_emergency_app"); } - - @Test - public void hasAppCapability_hasEmergencyCapability_shouldReturnTrue() { - List resolveInfos = new ArrayList<>(); - resolveInfos.add(new ResolveInfo()); - when(mPackageManager.queryIntentActivities(argThat(intent-> intent != null - && intent.getAction().equals(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)), - anyInt())).thenReturn(resolveInfos); - - assertThat(mController.hasAppCapability()).isTrue(); - } - - @Test - public void hasAppCapability_noEmergencyCapability_shouldReturnFalse() { - assertThat(mController.hasAppCapability()).isFalse(); - } - - @Test - public void isDefaultApp_isDefaultEmergency_shouldReturnTrue() { - when(mRoleManager.getRoleHolders(RoleManager.ROLE_EMERGENCY)) - .thenReturn(Collections.singletonList("Package1")); - - assertThat(mController.isDefaultApp()).isTrue(); - } - - @Test - public void isDefaultApp_notDefaultEmergency_shouldReturnFalse() { - assertThat(mController.isDefaultApp()).isFalse(); - } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceControllerTest.java index ff281b2d1e..c5cae3ae30 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceControllerTest.java @@ -18,15 +18,8 @@ package com.android.settings.applications.appinfo; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import android.content.ComponentName; import android.content.Context; -import android.content.pm.PackageManager; - -import com.android.settings.applications.defaultapps.DefaultHomePreferenceController; +import android.permission.PermissionControllerManager; import org.junit.Before; import org.junit.Test; @@ -35,62 +28,27 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; +import org.robolectric.shadows.ShadowApplication; @RunWith(RobolectricTestRunner.class) public class DefaultHomeShortcutPreferenceControllerTest { @Mock - private PackageManager mPackageManager; + private PermissionControllerManager mPermissionControllerManager; - private Context mContext; private DefaultHomeShortcutPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); - when(mContext.getPackageManager()).thenReturn(mPackageManager); - mController = new DefaultHomeShortcutPreferenceController(mContext, "Package1"); + ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE, + mPermissionControllerManager); + mController = new DefaultHomeShortcutPreferenceController(RuntimeEnvironment.application, + "Package1"); } @Test public void getPreferenceKey_shouldReturnDefaultHome() { assertThat(mController.getPreferenceKey()).isEqualTo("default_home"); } - - @Test - @Config(shadows = ShadowDefaultHomePreferenceController.class) - public void hasAppCapability_hasHomeCapability_shouldReturnTrue() { - assertThat(mController.hasAppCapability()).isTrue(); - } - - @Test - public void hasAppCapability_noHomeCapability_shouldReturnFalse() { - assertThat(mController.hasAppCapability()).isFalse(); - } - - @Test - public void isDefaultApp_isDefaultHome_shouldReturnTrue() { - when(mPackageManager.getHomeActivities(anyList())) - .thenReturn(new ComponentName("Package1", "cls1")); - assertThat(mController.isDefaultApp()).isTrue(); - } - - @Test - public void isDefaultApp_notDefaultHome_shouldReturnFalse() { - when(mPackageManager.getHomeActivities(anyList())) - .thenReturn(new ComponentName("pkg2", "cls1")); - assertThat(mController.isDefaultApp()).isFalse(); - } - - @Implements(DefaultHomePreferenceController.class) - public static class ShadowDefaultHomePreferenceController { - @Implementation - protected static boolean hasHomePreference(String pkg, Context context) { - return true; - } - } }