From 2229585e889bd90d23576bf357786d538ec9f209 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Fri, 22 Nov 2019 11:35:40 +0800 Subject: Refactor LocationSettings - Extends BasePreferenceController in LocationBasePreferenceController which binds preference key based on xml file instead of writing the key in java code. Then the controller can be used in many xmls. - Modify LocationServicePreferenceController to support only personal or profile user. Bug: 141601408 Test: manual, robolectric Change-Id: I51ee950dfb87474df84a8dc3db55fb911edcf599 --- .../AppLocationPermissionPreferenceController.java | 16 ++---- .../location/LocationBasePreferenceController.java | 41 ++++++++++----- .../LocationFooterPreferenceController.java | 17 ++---- .../LocationForWorkPreferenceController.java | 25 +++------ .../LocationScanningPreferenceController.java | 9 +--- .../LocationServicePreferenceController.java | 60 ++++++++++++---------- .../settings/location/LocationSettings.java | 41 +++++---------- .../RecentLocationRequestPreferenceController.java | 29 ++--------- .../RecentLocationRequestSeeAllFragment.java | 50 +++++------------- ...tLocationRequestSeeAllPreferenceController.java | 33 +++--------- 10 files changed, 116 insertions(+), 205 deletions(-) (limited to 'src/com') diff --git a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java index 65abe997a9..90b37978fd 100644 --- a/src/com/android/settings/location/AppLocationPermissionPreferenceController.java +++ b/src/com/android/settings/location/AppLocationPermissionPreferenceController.java @@ -16,7 +16,6 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.Arrays; import java.util.List; @@ -25,7 +24,6 @@ import java.util.concurrent.atomic.AtomicInteger; public class AppLocationPermissionPreferenceController extends LocationBasePreferenceController implements PreferenceControllerMixin { - private static final String KEY_APP_LEVEL_PERMISSIONS = "app_level_permissions"; /** Total number of apps that has location permission. */ @VisibleForTesting int mNumTotal = -1; @@ -40,20 +38,16 @@ public class AppLocationPermissionPreferenceController extends private final LocationManager mLocationManager; private Preference mPreference; - public AppLocationPermissionPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public AppLocationPermissionPreferenceController(Context context, String key) { + super(context, key); mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); } @Override - public String getPreferenceKey() { - return KEY_APP_LEVEL_PERMISSIONS; - } - - @Override - public boolean isAvailable() { + public int getAvailabilityStatus() { return Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED, 1) == 1; + Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED, 1) == 1 ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; } @Override diff --git a/src/com/android/settings/location/LocationBasePreferenceController.java b/src/com/android/settings/location/LocationBasePreferenceController.java index 6cf8626ebc..69ef1adf6e 100644 --- a/src/com/android/settings/location/LocationBasePreferenceController.java +++ b/src/com/android/settings/location/LocationBasePreferenceController.java @@ -16,29 +16,46 @@ package com.android.settings.location; import android.content.Context; import android.os.UserManager; -import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settings.core.BasePreferenceController; +import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.core.lifecycle.Lifecycle; /** * A base controller for preferences that listens to location settings change and modifies location * settings. */ -public abstract class LocationBasePreferenceController extends AbstractPreferenceController - implements PreferenceControllerMixin, LocationEnabler.LocationModeChangeListener { +public abstract class LocationBasePreferenceController extends BasePreferenceController + implements LocationEnabler.LocationModeChangeListener { - protected final UserManager mUserManager; - protected final LocationEnabler mLocationEnabler; + protected UserManager mUserManager; + protected LocationEnabler mLocationEnabler; + protected DashboardFragment mFragment; + protected Lifecycle mLifecycle; - public LocationBasePreferenceController(Context context, Lifecycle lifecycle) { - super(context); - mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); - mLocationEnabler = new LocationEnabler(context, this /* listener */, lifecycle); + /** + * Constructor of LocationBasePreferenceController. {@link BasePreferenceController} uses + * reflection to create controller, all controllers extends {@link BasePreferenceController} + * should have this function. + */ + public LocationBasePreferenceController(Context context, String key) { + super(context, key); + } + + /** + * Initialize {@link LocationEnabler} in this controller + * + * @param fragment The {@link DashboardFragment} uses the controller. + */ + public void init(DashboardFragment fragment) { + mFragment = fragment; + mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + mLifecycle = mFragment.getSettingsLifecycle(); + mLocationEnabler = new LocationEnabler(mContext, this /* listener */, mLifecycle); } @Override - public boolean isAvailable() { - return true; + public int getAvailabilityStatus() { + return AVAILABLE; } } diff --git a/src/com/android/settings/location/LocationFooterPreferenceController.java b/src/com/android/settings/location/LocationFooterPreferenceController.java index 7c39fea47f..3b9324df31 100644 --- a/src/com/android/settings/location/LocationFooterPreferenceController.java +++ b/src/com/android/settings/location/LocationFooterPreferenceController.java @@ -13,7 +13,6 @@ */ package com.android.settings.location; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -24,7 +23,6 @@ import android.content.pm.ResolveInfo; import android.location.LocationManager; import android.util.Log; -import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; @@ -41,23 +39,16 @@ import java.util.List; public class LocationFooterPreferenceController extends LocationBasePreferenceController { private static final String TAG = "LocationFooter"; - private static final String KEY_LOCATION_FOOTER = "location_footer"; private static final Intent INJECT_INTENT = new Intent(LocationManager.SETTINGS_FOOTER_DISPLAYED_ACTION); private final PackageManager mPackageManager; - public LocationFooterPreferenceController(Context context) { - // we don't care location mode changes, so pass in a null lifecycle to disable listening - super(context, null); + public LocationFooterPreferenceController(Context context, String key) { + super(context, key); mPackageManager = context.getPackageManager(); } - @Override - public String getPreferenceKey() { - return KEY_LOCATION_FOOTER; - } - /** * Insert footer preferences. */ @@ -97,8 +88,8 @@ public class LocationFooterPreferenceController extends LocationBasePreferenceCo * inject. */ @Override - public boolean isAvailable() { - return !getFooterData().isEmpty(); + public int getAvailabilityStatus() { + return !getFooterData().isEmpty() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } /** diff --git a/src/com/android/settings/location/LocationForWorkPreferenceController.java b/src/com/android/settings/location/LocationForWorkPreferenceController.java index 1208ea2ee0..342efff84f 100644 --- a/src/com/android/settings/location/LocationForWorkPreferenceController.java +++ b/src/com/android/settings/location/LocationForWorkPreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.location; import android.content.Context; import android.os.UserManager; +import android.text.TextUtils; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -25,25 +26,18 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedSwitchPreference; -import com.android.settingslib.core.lifecycle.Lifecycle; public class LocationForWorkPreferenceController extends LocationBasePreferenceController { - /** - * Key for managed profile location switch preference. Shown only - * if there is a managed profile. - */ - private static final String KEY_MANAGED_PROFILE_SWITCH = "managed_profile_location_switch"; - private RestrictedSwitchPreference mPreference; - public LocationForWorkPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public LocationForWorkPreferenceController(Context context, String key) { + super(context, key); } @Override public boolean handlePreferenceTreeClick(Preference preference) { - if (KEY_MANAGED_PROFILE_SWITCH.equals(preference.getKey())) { + if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { final boolean switchState = mPreference.isChecked(); mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, !switchState, Utils.getManagedProfile(mUserManager)); @@ -57,19 +51,14 @@ public class LocationForWorkPreferenceController extends LocationBasePreferenceC @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - mPreference = screen.findPreference(KEY_MANAGED_PROFILE_SWITCH); + mPreference = screen.findPreference(getPreferenceKey()); } @Override - public boolean isAvailable() { + public int getAvailabilityStatus() { // Looking for a managed profile. If there are no managed profiles then we are removing the // managed profile category. - return Utils.getManagedProfile(mUserManager) != null; - } - - @Override - public String getPreferenceKey() { - return KEY_MANAGED_PROFILE_SWITCH; + return Utils.getManagedProfile(mUserManager) != null ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override diff --git a/src/com/android/settings/location/LocationScanningPreferenceController.java b/src/com/android/settings/location/LocationScanningPreferenceController.java index 2c05a39e54..436676df55 100644 --- a/src/com/android/settings/location/LocationScanningPreferenceController.java +++ b/src/com/android/settings/location/LocationScanningPreferenceController.java @@ -19,19 +19,14 @@ package com.android.settings.location; import android.content.Context; import android.provider.Settings; -import androidx.annotation.VisibleForTesting; - import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class LocationScanningPreferenceController extends BasePreferenceController { - @VisibleForTesting static final String KEY_LOCATION_SCANNING = "location_scanning"; - private final Context mContext; - public LocationScanningPreferenceController(Context context) { - super(context, KEY_LOCATION_SCANNING); - mContext = context; + public LocationScanningPreferenceController(Context context, String key) { + super(context, key); } @Override diff --git a/src/com/android/settings/location/LocationServicePreferenceController.java b/src/com/android/settings/location/LocationServicePreferenceController.java index 70246cbe3a..0902573de0 100644 --- a/src/com/android/settings/location/LocationServicePreferenceController.java +++ b/src/com/android/settings/location/LocationServicePreferenceController.java @@ -27,8 +27,8 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.Utils; +import com.android.settings.dashboard.DashboardFragment; import com.android.settings.widget.RestrictedAppPreference; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; @@ -41,40 +41,31 @@ public class LocationServicePreferenceController extends LocationBasePreferenceC private static final String TAG = "LocationServicePrefCtrl"; /** Key for preference category "Location services" */ - private static final String KEY_LOCATION_SERVICES = "location_services"; + @VisibleForTesting + static final String KEY_LOCATION_SERVICES = "location_services"; /** Key for preference category "Location services for work" */ - private static final String KEY_LOCATION_SERVICES_MANAGED = "location_services_managed_profile"; + @VisibleForTesting + static final String KEY_LOCATION_SERVICES_MANAGED = "location_services_managed_profile"; @VisibleForTesting static final IntentFilter INTENT_FILTER_INJECTED_SETTING_CHANGED = new IntentFilter(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED); private PreferenceCategory mCategoryLocationServices; private PreferenceCategory mCategoryLocationServicesManaged; - private final LocationSettings mFragment; - private final AppSettingsInjector mInjector; + @VisibleForTesting + AppSettingsInjector mInjector; /** Receives UPDATE_INTENT */ @VisibleForTesting BroadcastReceiver mInjectedSettingsReceiver; - public LocationServicePreferenceController(Context context, LocationSettings fragment, - Lifecycle lifecycle) { - this(context, fragment, lifecycle, new AppSettingsInjector(context)); - } - - @VisibleForTesting - LocationServicePreferenceController(Context context, LocationSettings fragment, - Lifecycle lifecycle, AppSettingsInjector injector) { - super(context, lifecycle); - mFragment = fragment; - mInjector = injector; - if (lifecycle != null) { - lifecycle.addObserver(this); - } + public LocationServicePreferenceController(Context context, String key) { + super(context, key); } @Override - public String getPreferenceKey() { - return KEY_LOCATION_SERVICES; + public void init(DashboardFragment fragment) { + super.init(fragment); + mInjector = new AppSettingsInjector(mContext); } @Override @@ -86,8 +77,12 @@ public class LocationServicePreferenceController extends LocationBasePreferenceC @Override public void updateState(Preference preference) { - mCategoryLocationServices.removeAll(); - mCategoryLocationServicesManaged.removeAll(); + if (mCategoryLocationServices != null) { + mCategoryLocationServices.removeAll(); + } + if (mCategoryLocationServicesManaged != null) { + mCategoryLocationServicesManaged.removeAll(); + } final Map> prefs = getLocationServices(); boolean showPrimary = false; boolean showManaged = false; @@ -98,16 +93,25 @@ public class LocationServicePreferenceController extends LocationBasePreferenceC } } if (entry.getKey() == UserHandle.myUserId()) { - LocationSettings.addPreferencesSorted(entry.getValue(), mCategoryLocationServices); + if (mCategoryLocationServices != null) { + LocationSettings.addPreferencesSorted(entry.getValue(), + mCategoryLocationServices); + } showPrimary = true; } else { - LocationSettings.addPreferencesSorted(entry.getValue(), - mCategoryLocationServicesManaged); + if (mCategoryLocationServicesManaged != null) { + LocationSettings.addPreferencesSorted(entry.getValue(), + mCategoryLocationServicesManaged); + } showManaged = true; } } - mCategoryLocationServices.setVisible(showPrimary); - mCategoryLocationServicesManaged.setVisible(showManaged); + if (mCategoryLocationServices != null) { + mCategoryLocationServices.setVisible(showPrimary); + } + if (mCategoryLocationServicesManaged != null) { + mCategoryLocationServicesManaged.setVisible(showManaged); + } } @Override diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index 4afb504929..3b4c4aa228 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -29,12 +29,9 @@ import com.android.settings.SettingsActivity; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBar; -import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.location.RecentLocationApps; import com.android.settingslib.search.SearchIndexable; -import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -81,6 +78,17 @@ public class LocationSettings extends DashboardFragment { switchBar.show(); } + @Override + public void onAttach(Context context) { + super.onAttach(context); + + use(AppLocationPermissionPreferenceController.class).init(this); + use(RecentLocationRequestPreferenceController.class).init(this); + use(LocationServicePreferenceController.class).init(this); + use(LocationFooterPreferenceController.class).init(this); + use(LocationForWorkPreferenceController.class).init(this); + } + @Override protected int getPreferenceScreenResId() { return R.xml.location_settings; @@ -91,11 +99,6 @@ public class LocationSettings extends DashboardFragment { return TAG; } - @Override - protected List createPreferenceControllers(Context context) { - return buildPreferenceControllers(context, this, getSettingsLifecycle()); - } - static void addPreferencesSorted(List prefs, PreferenceGroup container) { // If there's some items to display, sort the items and add them to the container. Collections.sort(prefs, @@ -110,29 +113,9 @@ public class LocationSettings extends DashboardFragment { return R.string.help_url_location_access; } - private static List buildPreferenceControllers( - Context context, LocationSettings fragment, Lifecycle lifecycle) { - final List controllers = new ArrayList<>(); - controllers.add(new AppLocationPermissionPreferenceController(context, lifecycle)); - controllers.add(new LocationForWorkPreferenceController(context, lifecycle)); - controllers.add(new RecentLocationRequestPreferenceController(context, fragment, lifecycle)); - controllers.add(new LocationScanningPreferenceController(context)); - controllers.add(new LocationServicePreferenceController(context, fragment, lifecycle)); - controllers.add(new LocationFooterPreferenceController(context)); - return controllers; - } - /** * For Search. */ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider(R.xml.location_settings) { - - @Override - public List createPreferenceControllers(Context - context) { - return buildPreferenceControllers(context, null /* fragment */, - null /* lifecycle */); - } - }; + new BaseSearchIndexProvider(R.xml.location_settings); } diff --git a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java index fb8c62c657..0af084c0fc 100644 --- a/src/com/android/settings/location/RecentLocationRequestPreferenceController.java +++ b/src/com/android/settings/location/RecentLocationRequestPreferenceController.java @@ -26,18 +26,13 @@ import com.android.settings.R; import com.android.settings.applications.appinfo.AppInfoDashboardFragment; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.location.RecentLocationApps; import com.android.settingslib.widget.apppreference.AppPreference; import java.util.List; public class RecentLocationRequestPreferenceController extends LocationBasePreferenceController { - /** Key for preference category "Recent location requests" */ - private static final String KEY_RECENT_LOCATION_REQUESTS = "recent_location_requests"; - @VisibleForTesting - static final String KEY_SEE_ALL_BUTTON = "recent_location_requests_see_all_button"; - private final LocationSettings mFragment; + private final RecentLocationApps mRecentLocationApps; private PreferenceCategory mCategoryRecentLocationRequests; @@ -70,29 +65,15 @@ public class RecentLocationRequestPreferenceController extends LocationBasePrefe } } - public RecentLocationRequestPreferenceController(Context context, LocationSettings fragment, - Lifecycle lifecycle) { - this(context, fragment, lifecycle, new RecentLocationApps(context)); - } - - @VisibleForTesting - RecentLocationRequestPreferenceController(Context context, LocationSettings fragment, - Lifecycle lifecycle, RecentLocationApps recentApps) { - super(context, lifecycle); - mFragment = fragment; - mRecentLocationApps = recentApps; - } - - @Override - public String getPreferenceKey() { - return KEY_RECENT_LOCATION_REQUESTS; + public RecentLocationRequestPreferenceController(Context context, String key) { + super(context, key); + mRecentLocationApps = new RecentLocationApps(context); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - mCategoryRecentLocationRequests = - (PreferenceCategory) screen.findPreference(KEY_RECENT_LOCATION_REQUESTS); + mCategoryRecentLocationRequests = screen.findPreference(getPreferenceKey()); } @Override diff --git a/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java b/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java index 32c9d0d6af..fc2a5fed00 100644 --- a/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java +++ b/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java @@ -24,13 +24,8 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; -import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; -import java.util.ArrayList; -import java.util.List; - /** Dashboard Fragment to display all recent location requests, sorted by recency. */ @SearchIndexable public class RecentLocationRequestSeeAllFragment extends DashboardFragment { @@ -51,6 +46,14 @@ public class RecentLocationRequestSeeAllFragment extends DashboardFragment { return MetricsEvent.RECENT_LOCATION_REQUESTS_ALL; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + + mController = use(RecentLocationRequestSeeAllPreferenceController.class); + mController.init(this); + } + @Override protected int getPreferenceScreenResId() { return R.xml.location_recent_requests_see_all; @@ -61,11 +64,6 @@ public class RecentLocationRequestSeeAllFragment extends DashboardFragment { return TAG; } - @Override - protected List createPreferenceControllers(Context context) { - return buildPreferenceControllers(context, getSettingsLifecycle(), this); - } - @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()) { @@ -87,32 +85,6 @@ public class RecentLocationRequestSeeAllFragment extends DashboardFragment { mHideSystemMenu.setVisible(mShowSystem); } - private static List buildPreferenceControllers( - Context context, Lifecycle lifecycle, RecentLocationRequestSeeAllFragment fragment) { - final List controllers = new ArrayList<>(); - final RecentLocationRequestSeeAllPreferenceController controller = - new RecentLocationRequestSeeAllPreferenceController(context, lifecycle, fragment); - controllers.add(controller); - if (fragment != null) { - fragment.mController = controller; - } - return controllers; - } - - /** - * For Search. - */ - public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider(R.xml.location_recent_requests_see_all) { - - @Override - public List getPreferenceControllers(Context - context) { - return buildPreferenceControllers( - context, /* lifecycle = */ null, /* fragment = */ null); - } - }; - @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); @@ -122,4 +94,10 @@ public class RecentLocationRequestSeeAllFragment extends DashboardFragment { R.string.menu_hide_system); updateMenu(); } + + /** + * For Search. + */ + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider(R.xml.location_recent_requests_see_all); } diff --git a/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java b/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java index 3abccf7d23..012cb8bbe7 100644 --- a/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java +++ b/src/com/android/settings/location/RecentLocationRequestSeeAllPreferenceController.java @@ -22,44 +22,24 @@ import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settings.R; import com.android.settingslib.location.RecentLocationApps; import com.android.settingslib.widget.apppreference.AppPreference; import java.util.List; -import com.android.settings.R; - /** Preference controller for preference category displaying all recent location requests. */ public class RecentLocationRequestSeeAllPreferenceController extends LocationBasePreferenceController { - /** Key for preference category "All recent location requests" */ - private static final String KEY_ALL_RECENT_LOCATION_REQUESTS = "all_recent_location_requests"; - private final RecentLocationRequestSeeAllFragment mFragment; + private PreferenceCategory mCategoryAllRecentLocationRequests; private RecentLocationApps mRecentLocationApps; private boolean mShowSystem = false; private Preference mPreference; - public RecentLocationRequestSeeAllPreferenceController( - Context context, Lifecycle lifecycle, RecentLocationRequestSeeAllFragment fragment) { - this(context, lifecycle, fragment, new RecentLocationApps(context)); - } - - @VisibleForTesting - RecentLocationRequestSeeAllPreferenceController( - Context context, - Lifecycle lifecycle, - RecentLocationRequestSeeAllFragment fragment, - RecentLocationApps recentLocationApps) { - super(context, lifecycle); - mFragment = fragment; - mRecentLocationApps = recentLocationApps; - } - - @Override - public String getPreferenceKey() { - return KEY_ALL_RECENT_LOCATION_REQUESTS; + public RecentLocationRequestSeeAllPreferenceController(Context context, String key) { + super(context, key); + mRecentLocationApps = new RecentLocationApps(context); } @Override @@ -70,8 +50,7 @@ public class RecentLocationRequestSeeAllPreferenceController @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - mCategoryAllRecentLocationRequests = - (PreferenceCategory) screen.findPreference(KEY_ALL_RECENT_LOCATION_REQUESTS); + mCategoryAllRecentLocationRequests = screen.findPreference(getPreferenceKey()); } @Override -- cgit v1.2.3