Merge "Use refactored RecentAppOpsAccess" into sc-v2-dev am: 5da0ca8a14 am: 8df6b505af

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15547175

Change-Id: I9453a12a4bfe6e79e3a19a7371bba7ab03215a39
This commit is contained in:
Jordan Jozwiak
2021-08-18 01:12:01 +00:00
committed by Automerger Merge Worker
3 changed files with 19 additions and 35 deletions

View File

@@ -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());

View File

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

View File

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