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

Commit e6835713 authored by Jordan Jozwiak's avatar Jordan Jozwiak
Browse files

Use refactored RecentAppOpsAccess

Use the new class in place of the old one.

Bug: 182202223
Test: atest RecentLocationAccessPreferenceControllerTest
Change-Id: If0222e79bf8ba2ebe2b1b0a8c043ce39f5a45596
parent 23f97347
Loading
Loading
Loading
Loading
+11 −11
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settingslib.location.RecentLocationAccesses;
import com.android.settingslib.applications.RecentAppOpsAccess;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.AppPreference;
import com.android.settingslib.widget.AppPreference;


@@ -42,7 +42,7 @@ import java.util.List;
public class RecentLocationAccessPreferenceController extends LocationBasePreferenceController {
public class RecentLocationAccessPreferenceController extends LocationBasePreferenceController {
    public static final int MAX_APPS = 3;
    public static final int MAX_APPS = 3;
    @VisibleForTesting
    @VisibleForTesting
    RecentLocationAccesses mRecentLocationApps;
    RecentAppOpsAccess mRecentLocationApps;
    private PreferenceCategory mCategoryRecentLocationRequests;
    private PreferenceCategory mCategoryRecentLocationRequests;
    private int mType = ProfileSelectFragment.ProfileType.ALL;
    private int mType = ProfileSelectFragment.ProfileType.ALL;


@@ -71,12 +71,12 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer
    }
    }


    public RecentLocationAccessPreferenceController(Context context, String key) {
    public RecentLocationAccessPreferenceController(Context context, String key) {
        this(context, key, new RecentLocationAccesses(context));
        this(context, key, RecentAppOpsAccess.createForLocation(context));
    }
    }


    @VisibleForTesting
    @VisibleForTesting
    public RecentLocationAccessPreferenceController(Context context, String key,
    public RecentLocationAccessPreferenceController(Context context, String key,
            RecentLocationAccesses recentLocationApps) {
            RecentAppOpsAccess recentLocationApps) {
        super(context, key);
        super(context, key);
        mRecentLocationApps = recentLocationApps;
        mRecentLocationApps = recentLocationApps;
    }
    }
@@ -86,9 +86,9 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer
        super.displayPreference(screen);
        super.displayPreference(screen);
        mCategoryRecentLocationRequests = screen.findPreference(getPreferenceKey());
        mCategoryRecentLocationRequests = screen.findPreference(getPreferenceKey());
        final Context prefContext = mCategoryRecentLocationRequests.getContext();
        final Context prefContext = mCategoryRecentLocationRequests.getContext();
        final List<RecentLocationAccesses.Access> recentLocationAccesses = new ArrayList<>();
        final List<RecentAppOpsAccess.Access> recentLocationAccesses = new ArrayList<>();
        final UserManager userManager = UserManager.get(mContext);
        final UserManager userManager = UserManager.get(mContext);
        for (RecentLocationAccesses.Access access : mRecentLocationApps.getAppListSorted(
        for (RecentAppOpsAccess.Access access : mRecentLocationApps.getAppListSorted(
                /* showSystemApps= */ false)) {
                /* showSystemApps= */ false)) {
            if (isRequestMatchesProfileType(userManager, access, mType)) {
            if (isRequestMatchesProfileType(userManager, access, mType)) {
                recentLocationAccesses.add(access);
                recentLocationAccesses.add(access);
@@ -100,7 +100,7 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer


        if (recentLocationAccesses.size() > 0) {
        if (recentLocationAccesses.size() > 0) {
            // Add preferences to container in original order (already sorted by recency).
            // Add preferences to container in original order (already sorted by recency).
            for (RecentLocationAccesses.Access access : recentLocationAccesses) {
            for (RecentAppOpsAccess.Access access : recentLocationAccesses) {
                mCategoryRecentLocationRequests.addPreference(
                mCategoryRecentLocationRequests.addPreference(
                        createAppPreference(prefContext, access, mFragment));
                        createAppPreference(prefContext, access, mFragment));
            }
            }
@@ -132,7 +132,7 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer
     * Create a {@link AppPreference}
     * Create a {@link AppPreference}
     */
     */
    public static AppPreference createAppPreference(Context prefContext,
    public static AppPreference createAppPreference(Context prefContext,
            RecentLocationAccesses.Access access, DashboardFragment fragment) {
            RecentAppOpsAccess.Access access, DashboardFragment fragment) {
        final AppPreference pref = new AppPreference(prefContext);
        final AppPreference pref = new AppPreference(prefContext);
        pref.setIcon(access.icon);
        pref.setIcon(access.icon);
        pref.setTitle(access.label);
        pref.setTitle(access.label);
@@ -145,11 +145,11 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer
    }
    }


    /**
    /**
     * Return if the {@link RecentLocationAccesses.Access} matches current UI
     * Return if the {@link RecentAppOpsAccess.Access} matches current UI
     * {@ProfileSelectFragment.ProfileType}
     * {@link ProfileSelectFragment.ProfileType}
     */
     */
    public static boolean isRequestMatchesProfileType(UserManager userManager,
    public static boolean isRequestMatchesProfileType(UserManager userManager,
            RecentLocationAccesses.Access access, @ProfileSelectFragment.ProfileType int type) {
            RecentAppOpsAccess.Access access, @ProfileSelectFragment.ProfileType int type) {


        final boolean isWorkProfile = userManager.isManagedProfile(
        final boolean isWorkProfile = userManager.isManagedProfile(
                access.userHandle.getIdentifier());
                access.userHandle.getIdentifier());
+6 −6
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@ import androidx.preference.PreferenceScreen;


import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settingslib.location.RecentLocationAccesses;
import com.android.settingslib.applications.RecentAppOpsAccess;
import com.android.settingslib.widget.AppPreference;
import com.android.settingslib.widget.AppPreference;


import java.util.ArrayList;
import java.util.ArrayList;
@@ -37,14 +37,14 @@ public class RecentLocationAccessSeeAllPreferenceController
        extends LocationBasePreferenceController {
        extends LocationBasePreferenceController {


    private PreferenceScreen mCategoryAllRecentLocationAccess;
    private PreferenceScreen mCategoryAllRecentLocationAccess;
    private final RecentLocationAccesses mRecentLocationAccesses;
    private final RecentAppOpsAccess mRecentLocationAccesses;
    private boolean mShowSystem = false;
    private boolean mShowSystem = false;
    private Preference mPreference;
    private Preference mPreference;
    private int mType = ProfileSelectFragment.ProfileType.ALL;
    private int mType = ProfileSelectFragment.ProfileType.ALL;


    public RecentLocationAccessSeeAllPreferenceController(Context context, String key) {
    public RecentLocationAccessSeeAllPreferenceController(Context context, String key) {
        super(context, key);
        super(context, key);
        mRecentLocationAccesses = new RecentLocationAccesses(context);
        mRecentLocationAccesses = RecentAppOpsAccess.createForLocation(context);
    }
    }


    @Override
    @Override
@@ -65,8 +65,8 @@ public class RecentLocationAccessSeeAllPreferenceController


        final UserManager userManager = UserManager.get(mContext);
        final UserManager userManager = UserManager.get(mContext);


        final List<RecentLocationAccesses.Access> recentLocationAccesses = new ArrayList<>();
        final List<RecentAppOpsAccess.Access> recentLocationAccesses = new ArrayList<>();
        for (RecentLocationAccesses.Access access : mRecentLocationAccesses.getAppListSorted(
        for (RecentAppOpsAccess.Access access : mRecentLocationAccesses.getAppListSorted(
                mShowSystem)) {
                mShowSystem)) {
            if (isRequestMatchesProfileType(userManager, access, mType)) {
            if (isRequestMatchesProfileType(userManager, access, mType)) {
                recentLocationAccesses.add(access);
                recentLocationAccesses.add(access);
@@ -80,7 +80,7 @@ public class RecentLocationAccessSeeAllPreferenceController
            banner.setSelectable(false);
            banner.setSelectable(false);
            mCategoryAllRecentLocationAccess.addPreference(banner);
            mCategoryAllRecentLocationAccess.addPreference(banner);
        } else {
        } else {
            for (RecentLocationAccesses.Access request : recentLocationAccesses) {
            for (RecentAppOpsAccess.Access request : recentLocationAccesses) {
                final Preference appPreference = createAppPreference(
                final Preference appPreference = createAppPreference(
                        preference.getContext(),
                        preference.getContext(),
                        request, mFragment);
                        request, mFragment);
+2 −18
Original line number Original line Diff line number Diff line
@@ -18,12 +18,10 @@ package com.android.settings.location;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.content.Context;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View;
import android.widget.TextView;
import android.widget.TextView;
@@ -34,7 +32,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
import com.android.settingslib.location.RecentLocationAccesses;
import com.android.settingslib.applications.RecentAppOpsAccess;


import org.junit.After;
import org.junit.After;
import org.junit.Before;
import org.junit.Before;
@@ -48,7 +46,6 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Config;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.List;


@RunWith(RobolectricTestRunner.class)
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowDeviceConfig.class})
@Config(shadows = {ShadowDeviceConfig.class})
@@ -61,7 +58,7 @@ public class RecentLocationAccessPreferenceControllerTest {
    @Mock
    @Mock
    private DashboardFragment mDashboardFragment;
    private DashboardFragment mDashboardFragment;
    @Mock
    @Mock
    private RecentLocationAccesses mRecentLocationApps;
    private RecentAppOpsAccess mRecentLocationApps;


    private Context mContext;
    private Context mContext;
    private RecentLocationAccessPreferenceController mController;
    private RecentLocationAccessPreferenceController mController;
@@ -110,17 +107,4 @@ public class RecentLocationAccessPreferenceControllerTest {
                mContext.getText(R.string.location_recent_location_access_view_details));
                mContext.getText(R.string.location_recent_location_access_view_details));
        assertThat(details.hasOnClickListeners()).isTrue();
        assertThat(details.hasOnClickListeners()).isTrue();
    }
    }

    private List<RecentLocationAccesses.Access> createMockAccesses(int count) {
        final List<RecentLocationAccesses.Access> accesses = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            final Drawable icon = mock(Drawable.class);
            // Add mock accesses
            final RecentLocationAccesses.Access access = new RecentLocationAccesses.Access(
                    "packageName", android.os.Process.myUserHandle(), icon,
                    "appTitle" + i, "appSummary" + i, 1000 - i);
            accesses.add(access);
        }
        return accesses;
    }
}
}