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:
@@ -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());
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user