From 51b76855f9604fe7b8cd26c08bcde1eaedadefaa Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 26 Aug 2019 14:23:44 -0700 Subject: [PATCH] Add RoleControllerManager.isApplicationVisibleForRole(). Settings doesn't actually need to know whether an application qualifies for a role, but only whether the default app setting should be visible for an application. Qualification and visibility differs in cases such as FallbackHome inside Settings which is a qualifying home activity but should never be shown in default apps UI. Fixes: 138636320 Test: manual Change-Id: I2995b6fa5c7920d14fa644748db9c41b442ce53b --- ...ltAppShortcutPreferenceControllerBase.java | 10 ++++---- ...pShortcutPreferenceControllerBaseTest.java | 24 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java index 0663e2a35b4..5df30c28d98 100644 --- a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java +++ b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java @@ -45,7 +45,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre private boolean mRoleVisible; - private boolean mAppQualified; + private boolean mAppVisible; private PreferenceScreen mPreferenceScreen; @@ -65,9 +65,9 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre mRoleVisible = visible; refreshAvailability(); }); - roleControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName, executor, - qualified -> { - mAppQualified = qualified; + roleControllerManager.isApplicationVisibleForRole(mRoleName, mPackageName, executor, + visible -> { + mAppVisible = visible; refreshAvailability(); }); } @@ -94,7 +94,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre if (mContext.getSystemService(UserManager.class).isManagedProfile()) { return DISABLED_FOR_USER; } - return mRoleVisible && mAppQualified ? AVAILABLE : UNSUPPORTED_ON_DEVICE; + return mRoleVisible && mAppVisible ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override 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 81d52d2a6e3..7a4c6108916 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java @@ -85,8 +85,8 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { } @Test - public void constructor_callsIsApplicationQualifiedForRole() { - verify(mRoleControllerManager).isApplicationQualifiedForRole(eq(TEST_ROLE_NAME), eq( + public void constructor_callsIsApplicationVisibleForRole() { + verify(mRoleControllerManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq( TEST_PACKAGE_NAME), any(Executor.class), any(Consumer.class)); } @@ -108,7 +108,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { @Test public void getAvailabilityStatus_noCallbackForIsRoleNotVisible_shouldReturnUnsupported() { - setApplicationIsQualifiedForRole(true); + setApplicationIsVisibleForRole(true); assertThat(mController.getAvailabilityStatus()).isEqualTo( DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE); @@ -117,7 +117,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { @Test public void getAvailabilityStatus_RoleIsNotVisible_shouldReturnUnsupported() { setRoleIsVisible(false); - setApplicationIsQualifiedForRole(true); + setApplicationIsVisibleForRole(true); assertThat(mController.getAvailabilityStatus()).isEqualTo( DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE); @@ -125,7 +125,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { @Test public void - getAvailabilityStatus_noCallbackForIsApplicationQualifiedForRole_shouldReturnUnsupported() { + getAvailabilityStatus_noCallbackForIsApplicationVisibleForRole_shouldReturnUnsupported() { setRoleIsVisible(true); assertThat(mController.getAvailabilityStatus()).isEqualTo( @@ -133,18 +133,18 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { } @Test - public void getAvailabilityStatus_applicationIsNotQualifiedForRole_shouldReturnUnsupported() { + public void getAvailabilityStatus_applicationIsNotVisibleForRole_shouldReturnUnsupported() { setRoleIsVisible(true); - setApplicationIsQualifiedForRole(false); + setApplicationIsVisibleForRole(false); assertThat(mController.getAvailabilityStatus()).isEqualTo( DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE); } @Test - public void getAvailabilityStatus_RoleVisibleAndApplicationQualified_shouldReturnAvailable() { + public void getAvailabilityStatus_RoleVisibleAndApplicationVisible_shouldReturnAvailable() { setRoleIsVisible(true); - setApplicationIsQualifiedForRole(true); + setApplicationIsVisibleForRole(true); assertThat(mController.getAvailabilityStatus()).isEqualTo( DefaultAppShortcutPreferenceControllerBase.AVAILABLE); @@ -159,13 +159,13 @@ public class DefaultAppShortcutPreferenceControllerBaseTest { callback.accept(visible); } - private void setApplicationIsQualifiedForRole(boolean qualified) { + private void setApplicationIsVisibleForRole(boolean visible) { final ArgumentCaptor> callbackCaptor = ArgumentCaptor.forClass( Consumer.class); - verify(mRoleControllerManager).isApplicationQualifiedForRole(eq(TEST_ROLE_NAME), eq( + verify(mRoleControllerManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq( TEST_PACKAGE_NAME), any(Executor.class), callbackCaptor.capture()); final Consumer callback = callbackCaptor.getValue(); - callback.accept(qualified); + callback.accept(visible); } @Test