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:
@@ -45,7 +45,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
|
|||||||
|
|
||||||
private boolean mRoleVisible;
|
private boolean mRoleVisible;
|
||||||
|
|
||||||
private boolean mAppQualified;
|
private boolean mAppVisible;
|
||||||
|
|
||||||
private PreferenceScreen mPreferenceScreen;
|
private PreferenceScreen mPreferenceScreen;
|
||||||
|
|
||||||
@@ -65,9 +65,9 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
|
|||||||
mRoleVisible = visible;
|
mRoleVisible = visible;
|
||||||
refreshAvailability();
|
refreshAvailability();
|
||||||
});
|
});
|
||||||
roleControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName, executor,
|
roleControllerManager.isApplicationVisibleForRole(mRoleName, mPackageName, executor,
|
||||||
qualified -> {
|
visible -> {
|
||||||
mAppQualified = qualified;
|
mAppVisible = visible;
|
||||||
refreshAvailability();
|
refreshAvailability();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -94,7 +94,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
|
|||||||
if (mContext.getSystemService(UserManager.class).isManagedProfile()) {
|
if (mContext.getSystemService(UserManager.class).isManagedProfile()) {
|
||||||
return DISABLED_FOR_USER;
|
return DISABLED_FOR_USER;
|
||||||
}
|
}
|
||||||
return mRoleVisible && mAppQualified ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
return mRoleVisible && mAppVisible ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -85,8 +85,8 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void constructor_callsIsApplicationQualifiedForRole() {
|
public void constructor_callsIsApplicationVisibleForRole() {
|
||||||
verify(mRoleControllerManager).isApplicationQualifiedForRole(eq(TEST_ROLE_NAME), eq(
|
verify(mRoleControllerManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq(
|
||||||
TEST_PACKAGE_NAME), any(Executor.class), any(Consumer.class));
|
TEST_PACKAGE_NAME), any(Executor.class), any(Consumer.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
|||||||
@Test
|
@Test
|
||||||
public void
|
public void
|
||||||
getAvailabilityStatus_noCallbackForIsRoleNotVisible_shouldReturnUnsupported() {
|
getAvailabilityStatus_noCallbackForIsRoleNotVisible_shouldReturnUnsupported() {
|
||||||
setApplicationIsQualifiedForRole(true);
|
setApplicationIsVisibleForRole(true);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||||
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
||||||
@@ -117,7 +117,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_RoleIsNotVisible_shouldReturnUnsupported() {
|
public void getAvailabilityStatus_RoleIsNotVisible_shouldReturnUnsupported() {
|
||||||
setRoleIsVisible(false);
|
setRoleIsVisible(false);
|
||||||
setApplicationIsQualifiedForRole(true);
|
setApplicationIsVisibleForRole(true);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||||
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
||||||
@@ -125,7 +125,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void
|
public void
|
||||||
getAvailabilityStatus_noCallbackForIsApplicationQualifiedForRole_shouldReturnUnsupported() {
|
getAvailabilityStatus_noCallbackForIsApplicationVisibleForRole_shouldReturnUnsupported() {
|
||||||
setRoleIsVisible(true);
|
setRoleIsVisible(true);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||||
@@ -133,18 +133,18 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_applicationIsNotQualifiedForRole_shouldReturnUnsupported() {
|
public void getAvailabilityStatus_applicationIsNotVisibleForRole_shouldReturnUnsupported() {
|
||||||
setRoleIsVisible(true);
|
setRoleIsVisible(true);
|
||||||
setApplicationIsQualifiedForRole(false);
|
setApplicationIsVisibleForRole(false);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||||
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_RoleVisibleAndApplicationQualified_shouldReturnAvailable() {
|
public void getAvailabilityStatus_RoleVisibleAndApplicationVisible_shouldReturnAvailable() {
|
||||||
setRoleIsVisible(true);
|
setRoleIsVisible(true);
|
||||||
setApplicationIsQualifiedForRole(true);
|
setApplicationIsVisibleForRole(true);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||||
DefaultAppShortcutPreferenceControllerBase.AVAILABLE);
|
DefaultAppShortcutPreferenceControllerBase.AVAILABLE);
|
||||||
@@ -159,13 +159,13 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
|||||||
callback.accept(visible);
|
callback.accept(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setApplicationIsQualifiedForRole(boolean qualified) {
|
private void setApplicationIsVisibleForRole(boolean visible) {
|
||||||
final ArgumentCaptor<Consumer<Boolean>> callbackCaptor = ArgumentCaptor.forClass(
|
final ArgumentCaptor<Consumer<Boolean>> callbackCaptor = ArgumentCaptor.forClass(
|
||||||
Consumer.class);
|
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());
|
TEST_PACKAGE_NAME), any(Executor.class), callbackCaptor.capture());
|
||||||
final Consumer<Boolean> callback = callbackCaptor.getValue();
|
final Consumer<Boolean> callback = callbackCaptor.getValue();
|
||||||
callback.accept(qualified);
|
callback.accept(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user