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
This commit is contained in:
Hai Zhang
2019-08-26 14:23:44 -07:00
parent 8d59885bc2
commit 51b76855f9
2 changed files with 17 additions and 17 deletions

View File

@@ -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

View File

@@ -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<Consumer<Boolean>> 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<Boolean> callback = callbackCaptor.getValue();
callback.accept(qualified);
callback.accept(visible);
}
@Test