Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8bd0d26 authored by Hai Zhang's avatar Hai Zhang
Browse files

Expose role API for Settings on RoleManager.

Settings is a platform app so the role APIs for it wasn't system APIs,
but just @hide. Now that we are moving role into module, we need to
create system APIs for them.

RoleControllerManager is an implementation detail and may change in
soon when we move role logic into system server and leave only UI in
PermissionController, so we shouldn't expose it. Instead, we can
expose the new system APIs on RoleManager, and delegate to
RoleControllerManager internally.

Bug: 158736025
Test: presubmit
Test: atest DefaultSmsShortcutPreferenceControllerTest
Change-Id: Iafe1d24601a32799e04d9aa385ec2fbce833a02e
parent af1fbb77
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -14,9 +14,7 @@

package com.android.settings.applications.appinfo;

import android.app.role.RoleControllerManager;
import android.app.role.RoleManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.os.UserManager;
@@ -58,14 +56,12 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre

        mRoleManager = context.getSystemService(RoleManager.class);

        final RoleControllerManager roleControllerManager =
                mContext.getSystemService(RoleControllerManager.class);
        final Executor executor = mContext.getMainExecutor();
        roleControllerManager.isRoleVisible(mRoleName, executor, visible -> {
        mRoleManager.isRoleVisible(mRoleName, executor, visible -> {
            mRoleVisible = visible;
            refreshAvailability();
        });
        roleControllerManager.isApplicationVisibleForRole(mRoleName, mPackageName, executor,
        mRoleManager.isApplicationVisibleForRole(mRoleName, mPackageName, executor,
                visible -> {
                    mAppVisible = visible;
                    refreshAvailability();
+3 −7
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import static org.mockito.Mockito.when;
import static org.robolectric.Shadows.shadowOf;

import android.app.Activity;
import android.app.role.RoleControllerManager;
import android.app.role.RoleManager;
import android.content.Context;
import android.content.Intent;
@@ -63,8 +62,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
    @Mock
    private RoleManager mRoleManager;
    @Mock
    private RoleControllerManager mRoleControllerManager;
    @Mock
    private Preference mPreference;

    private Activity mActivity;
@@ -77,7 +74,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
        MockitoAnnotations.initMocks(this);
        ShadowApplication shadowApplication = ShadowApplication.getInstance();
        shadowApplication.setSystemService(Context.ROLE_SERVICE, mRoleManager);
        shadowApplication.setSystemService(Context.ROLE_CONTROLLER_SERVICE, mRoleControllerManager);
        mActivity = Robolectric.setupActivity(Activity.class);
        mShadowUserManager = shadowOf(mActivity.getSystemService(UserManager.class));
        mController = new TestRolePreferenceController(mActivity);
@@ -86,7 +82,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {

    @Test
    public void constructor_callsIsApplicationVisibleForRole() {
        verify(mRoleControllerManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq(
        verify(mRoleManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq(
                TEST_PACKAGE_NAME), any(Executor.class), any(Consumer.class));
    }

@@ -153,7 +149,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
    private void setRoleIsVisible(boolean visible) {
        final ArgumentCaptor<Consumer<Boolean>> callbackCaptor = ArgumentCaptor.forClass(
                Consumer.class);
        verify(mRoleControllerManager).isRoleVisible(eq(TEST_ROLE_NAME), any(Executor.class),
        verify(mRoleManager).isRoleVisible(eq(TEST_ROLE_NAME), any(Executor.class),
                callbackCaptor.capture());
        final Consumer<Boolean> callback = callbackCaptor.getValue();
        callback.accept(visible);
@@ -162,7 +158,7 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
    private void setApplicationIsVisibleForRole(boolean visible) {
        final ArgumentCaptor<Consumer<Boolean>> callbackCaptor = ArgumentCaptor.forClass(
                Consumer.class);
        verify(mRoleControllerManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq(
        verify(mRoleManager).isApplicationVisibleForRole(eq(TEST_ROLE_NAME), eq(
                TEST_PACKAGE_NAME), any(Executor.class), callbackCaptor.capture());
        final Consumer<Boolean> callback = callbackCaptor.getValue();
        callback.accept(visible);
+3 −4
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package com.android.settings.applications.appinfo;

import static com.google.common.truth.Truth.assertThat;

import android.app.role.RoleControllerManager;
import android.app.role.RoleManager;
import android.content.Context;

import org.junit.Before;
@@ -34,15 +34,14 @@ import org.robolectric.shadows.ShadowApplication;
public class DefaultBrowserShortcutPreferenceControllerTest {

    @Mock
    private RoleControllerManager mRoleControllerManager;
    private RoleManager mRoleManager;

    private DefaultBrowserShortcutPreferenceController mController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        ShadowApplication.getInstance().setSystemService(Context.ROLE_CONTROLLER_SERVICE,
                mRoleControllerManager);
        ShadowApplication.getInstance().setSystemService(Context.ROLE_SERVICE, mRoleManager);
        mController = new DefaultBrowserShortcutPreferenceController(RuntimeEnvironment.application,
                "Package1");
    }
+3 −4
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package com.android.settings.applications.appinfo;

import static com.google.common.truth.Truth.assertThat;

import android.app.role.RoleControllerManager;
import android.app.role.RoleManager;
import android.content.Context;

import org.junit.Before;
@@ -34,15 +34,14 @@ import org.robolectric.shadows.ShadowApplication;
public class DefaultEmergencyShortcutPreferenceControllerTest {

    @Mock
    private RoleControllerManager mRoleControllerManager;
    private RoleManager mRoleManager;

    private DefaultEmergencyShortcutPreferenceController mController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        ShadowApplication.getInstance().setSystemService(Context.ROLE_CONTROLLER_SERVICE,
                mRoleControllerManager);
        ShadowApplication.getInstance().setSystemService(Context.ROLE_SERVICE, mRoleManager);
        mController = new DefaultEmergencyShortcutPreferenceController(
                RuntimeEnvironment.application, "Package1");
    }
+3 −4
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package com.android.settings.applications.appinfo;

import static com.google.common.truth.Truth.assertThat;

import android.app.role.RoleControllerManager;
import android.app.role.RoleManager;
import android.content.Context;

import org.junit.Before;
@@ -34,15 +34,14 @@ import org.robolectric.shadows.ShadowApplication;
public class DefaultHomeShortcutPreferenceControllerTest {

    @Mock
    private RoleControllerManager mRoleControllerManager;
    private RoleManager mRoleManager;

    private DefaultHomeShortcutPreferenceController mController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        ShadowApplication.getInstance().setSystemService(Context.ROLE_CONTROLLER_SERVICE,
                mRoleControllerManager);
        ShadowApplication.getInstance().setSystemService(Context.ROLE_SERVICE, mRoleManager);
        mController = new DefaultHomeShortcutPreferenceController(RuntimeEnvironment.application,
                "Package1");
    }
Loading