Loading src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java +15 −57 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -58,8 +54,6 @@ 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, Loading @@ -68,13 +62,6 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre 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); } @Override public void displayPreference(PreferenceScreen screen) { Loading @@ -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 Loading @@ -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(); } 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) { private boolean isDefaultApp() { final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders( mRoleName)); return TextUtils.equals(mPackageName, packageName); } return false; } } src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java +2 −17 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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()); } } src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java +2 −14 Original line number Diff line number Diff line Loading @@ -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); } } src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java +2 −15 Original line number Diff line number Diff line Loading @@ -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()); } } tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java +3 −79 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -73,7 +71,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { private ShadowUserManager mShadowUserManager; private TestRolePreferenceController mController; private TestLegacyPreferenceController mLegacyController; @Before public void setUp() { Loading @@ -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 Loading Loading @@ -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); } Loading @@ -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); Loading @@ -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; } } } Loading
src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java +15 −57 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -58,8 +54,6 @@ 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, Loading @@ -68,13 +62,6 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre 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); } @Override public void displayPreference(PreferenceScreen screen) { Loading @@ -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 Loading @@ -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(); } 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) { private boolean isDefaultApp() { final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders( mRoleName)); return TextUtils.equals(mPackageName, packageName); } return false; } }
src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java +2 −17 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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()); } }
src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java +2 −14 Original line number Diff line number Diff line Loading @@ -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); } }
src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java +2 −15 Original line number Diff line number Diff line Loading @@ -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()); } }
tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java +3 −79 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -73,7 +71,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { private ShadowUserManager mShadowUserManager; private TestRolePreferenceController mController; private TestLegacyPreferenceController mLegacyController; @Before public void setUp() { Loading @@ -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 Loading Loading @@ -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); } Loading @@ -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); Loading @@ -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; } } }