From b5c651c9399aa53e0bef296a265a47c825fe12b2 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 29 Mar 2018 15:45:49 -0700 Subject: [PATCH] Register most app info related controllers in xml Bug: 77216595 Test: robotests Change-Id: I79afa38820b7518d8b3112148802797ebcf6d184 --- res/xml/app_info_settings.xml | 48 ++++--- .../applications/DefaultAppSettings.java | 2 +- ...edAppInfoPreferenceCategoryController.java | 28 ++++ .../AppDataUsagePreferenceController.java | 10 +- .../appinfo/AppInfoDashboardFragment.java | 130 ++++++++++-------- .../AppInfoPreferenceControllerBase.java | 21 +-- .../AppInstallerInfoPreferenceController.java | 23 ++-- ...InstallerPreferenceCategoryController.java | 10 +- .../AppNotificationPreferenceController.java | 11 +- .../AppOpenByDefaultPreferenceController.java | 12 +- .../AppPermissionPreferenceController.java | 16 +-- .../AppStoragePreferenceController.java | 10 +- .../AppVersionPreferenceController.java | 14 +- ...DrawOverlayDetailPreferenceController.java | 6 +- ...ernalSourceDetailPreferenceController.java | 13 +- ...InstantAppDomainsPreferenceController.java | 7 +- ...reInPictureDetailPreferenceController.java | 14 +- ...iteSystemSettingsPreferenceController.java | 7 +- .../enterprise/EnterprisePrivacySettings.java | 4 +- .../language/LanguageAndInputSettings.java | 6 +- .../settings/notification/SoundSettings.java | 2 +- .../security/EncryptionAndCredential.java | 2 +- .../settings/security/SecuritySettings.java | 8 +- .../slices/SliceBroadcastReceiver.java | 3 +- .../widget/PreferenceCategoryController.java | 30 ++-- ...lid_base_preference_controller_constructor | 12 -- .../AppDataUsagePreferenceControllerTest.java | 4 +- .../AppInfoPreferenceControllerBaseTest.java | 3 +- ...InstallerInfoPreferenceControllerTest.java | 14 +- ...pNotificationPreferenceControllerTest.java | 7 +- ...OpenByDefaultPreferenceControllerTest.java | 3 +- ...AppPermissionPreferenceControllerTest.java | 7 +- .../AppStoragePreferenceControllerTest.java | 4 +- .../AppVersionPreferenceControllerTest.java | 3 +- ...OverlayDetailPreferenceControllerTest.java | 11 +- ...lSourceDetailPreferenceControllerTest.java | 11 +- ...antAppDomainsPreferenceControllerTest.java | 11 +- ...PictureDetailPreferenceControllerTest.java | 10 +- ...ystemSettingsPreferenceControllerTest.java | 3 +- .../PreferenceCategoryControllerTest.java | 8 +- 40 files changed, 299 insertions(+), 249 deletions(-) create mode 100644 src/com/android/settings/applications/appinfo/AdvancedAppInfoPreferenceCategoryController.java diff --git a/res/xml/app_info_settings.xml b/res/xml/app_info_settings.xml index 4695b446ee7..86b0df03180 100644 --- a/res/xml/app_info_settings.xml +++ b/res/xml/app_info_settings.xml @@ -17,9 +17,9 @@ + settings:initialExpandedChildrenCount="6"> + android:title="@string/notifications_label" + settings:controller="com.android.settings.applications.appinfo.AppNotificationPreferenceController" /> + settings:summaryLineCount="1" + settings:controller="com.android.settings.applications.appinfo.AppPermissionPreferenceController" /> + android:summary="@string/summary_placeholder" + settings:controller="com.android.settings.applications.appinfo.AppStoragePreferenceController" /> + android:selectable="true" + settings:controller="com.android.settings.applications.appinfo.InstantAppDomainsPreferenceController" /> + android:summary="@string/summary_placeholder" + settings:controller="com.android.settings.applications.appinfo.AppDataUsagePreferenceController" /> + settings:controller="com.android.settings.applications.appinfo.TimeSpentInAppPreferenceController" /> + android:selectable="true" + settings:controller="com.android.settings.applications.appinfo.AppOpenByDefaultPreferenceController" /> + android:title="@string/advanced_apps" + settings:controller="com.android.settings.applications.appinfo.AdvancedAppInfoPreferenceCategoryController"> + android:summary="@string/summary_placeholder" + settings:controller="com.android.settings.applications.appinfo.DrawOverlayDetailPreferenceController" /> + android:summary="@string/summary_placeholder" + settings:controller="com.android.settings.applications.appinfo.WriteSystemSettingsPreferenceController" /> + android:summary="@string/summary_placeholder" + settings:controller="com.android.settings.applications.appinfo.PictureInPictureDetailPreferenceController" /> + android:summary="@string/summary_placeholder" + settings:controller="com.android.settings.applications.appinfo.ExternalSourceDetailPreferenceController" /> + android:title="@string/app_install_details_group_title" + settings:controller="com.android.settings.applications.appinfo.AppInstallerPreferenceCategoryController"> + android:title="@string/app_install_details_title" + settings:controller="com.android.settings.applications.appinfo.AppInstallerInfoPreferenceController" /> + android:order="9999" + settings:controller="com.android.settings.applications.appinfo.AppVersionPreferenceController" /> \ No newline at end of file diff --git a/src/com/android/settings/applications/DefaultAppSettings.java b/src/com/android/settings/applications/DefaultAppSettings.java index 7d74fbdd017..7fc405f3d39 100644 --- a/src/com/android/settings/applications/DefaultAppSettings.java +++ b/src/com/android/settings/applications/DefaultAppSettings.java @@ -76,7 +76,7 @@ public class DefaultAppSettings extends DashboardFragment { workControllers.add(new DefaultWorkBrowserPreferenceController(context)); controllers.addAll(workControllers); controllers.add(new PreferenceCategoryController( - context, KEY_DEFAULT_WORK_CATEGORY, workControllers)); + context, KEY_DEFAULT_WORK_CATEGORY).setChildren(workControllers)); controllers.add(new DefaultAssistPreferenceController(context, KEY_ASSIST_VOICE_INPUT, false /* showSetting */)); controllers.add(new DefaultBrowserPreferenceController(context)); diff --git a/src/com/android/settings/applications/appinfo/AdvancedAppInfoPreferenceCategoryController.java b/src/com/android/settings/applications/appinfo/AdvancedAppInfoPreferenceCategoryController.java new file mode 100644 index 00000000000..aef3195684f --- /dev/null +++ b/src/com/android/settings/applications/appinfo/AdvancedAppInfoPreferenceCategoryController.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications.appinfo; + +import android.content.Context; + +import com.android.settings.widget.PreferenceCategoryController; + +public class AdvancedAppInfoPreferenceCategoryController extends PreferenceCategoryController { + + public AdvancedAppInfoPreferenceCategoryController(Context context, String key) { + super(context, key); + } +} diff --git a/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java b/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java index 669bc5a3a9e..a40562ae6df 100644 --- a/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java @@ -38,7 +38,6 @@ import com.android.settings.datausage.AppDataUsage; import com.android.settings.datausage.DataUsageList; import com.android.settings.datausage.DataUsageUtils; import com.android.settingslib.AppItem; -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; @@ -48,16 +47,11 @@ import com.android.settingslib.net.ChartDataLoader; public class AppDataUsagePreferenceController extends AppInfoPreferenceControllerBase implements LoaderManager.LoaderCallbacks, LifecycleObserver, OnResume, OnPause { - private static final String KEY_DATA = "data_settings"; private ChartData mChartData; private INetworkStatsSession mStatsSession; - public AppDataUsagePreferenceController(Context context, AppInfoDashboardFragment parent, - Lifecycle lifecycle) { - super(context, parent, KEY_DATA); - if (lifecycle != null) { - lifecycle.addObserver(this); - } + public AppDataUsagePreferenceController(Context context,String key) { + super(context, key); } @Override diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index daed1e1c871..eddbd963981 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -55,7 +55,6 @@ import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.widget.PreferenceCategoryController; import com.android.settings.wrapper.DevicePolicyManagerWrapper; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.applications.AppUtils; @@ -84,8 +83,10 @@ public class AppInfoDashboardFragment extends DashboardFragment private static final String TAG = "AppInfoDashboard"; // Menu identifiers - @VisibleForTesting static final int UNINSTALL_ALL_USERS_MENU = 1; - @VisibleForTesting static final int UNINSTALL_UPDATES = 2; + @VisibleForTesting + static final int UNINSTALL_ALL_USERS_MENU = 1; + @VisibleForTesting + static final int UNINSTALL_UPDATES = 2; static final int INSTALL_INSTANT_APP_MENU = 3; // Result code identifiers @@ -106,8 +107,6 @@ public class AppInfoDashboardFragment extends DashboardFragment private static final int DLG_SPECIAL_DISABLE = DLG_BASE + 3; static final int DLG_CLEAR_INSTANT_APP = DLG_BASE + 4; - private static final String KEY_ADVANCED_APP_INFO_CATEGORY = "advanced_app_info"; - public static final String ARG_PACKAGE_NAME = "package"; public static final String ARG_PACKAGE_UID = "uid"; @@ -156,7 +155,42 @@ public class AppInfoDashboardFragment extends DashboardFragment @Override public void onAttach(Context context) { super.onAttach(context); - use(TimeSpentInAppPreferenceController.class).setPackageName(getPackageName()); + final String packageName = getPackageName(); + use(TimeSpentInAppPreferenceController.class).setPackageName(packageName); + + use(AppDataUsagePreferenceController.class).setParentFragment(this); + final AppInstallerInfoPreferenceController installer = + use(AppInstallerInfoPreferenceController.class); + installer.setPackageName(packageName); + installer.setParentFragment(this); + use(AppInstallerPreferenceCategoryController.class).setChildren(Arrays.asList(installer)); + use(AppNotificationPreferenceController.class).setParentFragment(this); + use(AppOpenByDefaultPreferenceController.class).setParentFragment(this); + use(AppPermissionPreferenceController.class).setParentFragment(this); + use(AppPermissionPreferenceController.class).setPackageName(packageName); + use(AppStoragePreferenceController.class).setParentFragment(this); + use(AppVersionPreferenceController.class).setParentFragment(this); + use(InstantAppDomainsPreferenceController.class).setParentFragment(this); + + final WriteSystemSettingsPreferenceController writeSystemSettings = + use(WriteSystemSettingsPreferenceController.class); + writeSystemSettings.setParentFragment(this); + + final DrawOverlayDetailPreferenceController drawOverlay = + use(DrawOverlayDetailPreferenceController.class); + drawOverlay.setParentFragment(this); + + final PictureInPictureDetailPreferenceController pip = + use(PictureInPictureDetailPreferenceController.class); + pip.setPackageName(packageName); + pip.setParentFragment(this); + final ExternalSourceDetailPreferenceController externalSource = + use(ExternalSourceDetailPreferenceController.class); + externalSource.setPackageName(packageName); + externalSource.setParentFragment(this); + + use(AdvancedAppInfoPreferenceCategoryController.class).setChildren(Arrays.asList( + writeSystemSettings, drawOverlay, pip, externalSource)); } @Override @@ -227,16 +261,6 @@ public class AppInfoDashboardFragment extends DashboardFragment // when app state changes. controllers.add( new AppHeaderViewPreferenceController(context, this, packageName, lifecycle)); - controllers.add(new AppStoragePreferenceController(context, this, lifecycle)); - controllers.add(new AppDataUsagePreferenceController(context, this, lifecycle)); - controllers.add(new AppNotificationPreferenceController(context, this)); - controllers.add(new AppOpenByDefaultPreferenceController(context, this)); - controllers.add(new AppPermissionPreferenceController(context, this, packageName)); - controllers.add(new AppVersionPreferenceController(context, this)); - controllers.add(new InstantAppDomainsPreferenceController(context, this)); - final AppInstallerInfoPreferenceController appInstallerInfoPreferenceController = - new AppInstallerInfoPreferenceController(context, this, packageName); - controllers.add(appInstallerInfoPreferenceController); mAppActionButtonPreferenceController = new AppActionButtonPreferenceController(context, this, packageName); controllers.add(mAppActionButtonPreferenceController); @@ -258,23 +282,15 @@ public class AppInfoDashboardFragment extends DashboardFragment controllers.add(new DefaultEmergencyShortcutPreferenceController(context, packageName)); controllers.add(new DefaultSmsShortcutPreferenceController(context, packageName)); - final List advancedAppInfoControllers = new ArrayList<>(); - advancedAppInfoControllers.add(new DrawOverlayDetailPreferenceController(context, this)); - advancedAppInfoControllers.add(new WriteSystemSettingsPreferenceController(context, this)); - advancedAppInfoControllers.add( - new PictureInPictureDetailPreferenceController(context, this, packageName)); - advancedAppInfoControllers.add( - new ExternalSourceDetailPreferenceController(context, this, packageName)); - controllers.addAll(advancedAppInfoControllers); - controllers.add(new PreferenceCategoryController( - context, KEY_ADVANCED_APP_INFO_CATEGORY, advancedAppInfoControllers)); - - controllers.add(new AppInstallerPreferenceCategoryController( - context, Arrays.asList(appInstallerInfoPreferenceController))); - return controllers; } + void addToCallbackList(Callback callback) { + if (callback != null) { + mCallbacks.add(callback); + } + } + ApplicationsState.AppEntry getAppEntry() { return mAppEntry; } @@ -291,7 +307,7 @@ public class AppInfoDashboardFragment extends DashboardFragment public void onPackageSizeChanged(String packageName) { if (!TextUtils.equals(packageName, mPackageName)) { Log.d(TAG, "Package change irrelevant, skipping"); - return; + return; } refreshUi(); } @@ -429,7 +445,7 @@ public class AppInfoDashboardFragment extends DashboardFragment if (!mInitialized) { // First time init: are we displaying an uninstalled app? mInitialized = true; - mShowUninstalled = (mAppEntry.info.flags&ApplicationInfo.FLAG_INSTALLED) == 0; + mShowUninstalled = (mAppEntry.info.flags & ApplicationInfo.FLAG_INSTALLED) == 0; } else { // All other times: if the app no longer exists then we want // to go away. @@ -437,12 +453,12 @@ public class AppInfoDashboardFragment extends DashboardFragment final ApplicationInfo ainfo = getActivity().getPackageManager().getApplicationInfo( mAppEntry.info.packageName, PackageManager.MATCH_DISABLED_COMPONENTS - | PackageManager.MATCH_ANY_USER); + | PackageManager.MATCH_ANY_USER); if (!mShowUninstalled) { // If we did not start out with the app uninstalled, then // it transitioning to the uninstalled state for the current // user means we should go away as well. - return (ainfo.flags&ApplicationInfo.FLAG_INSTALLED) != 0; + return (ainfo.flags & ApplicationInfo.FLAG_INSTALLED) != 0; } } catch (NameNotFoundException e) { return false; @@ -460,15 +476,17 @@ public class AppInfoDashboardFragment extends DashboardFragment .setMessage(getActivity().getText(R.string.app_disable_dlg_text)) .setPositiveButton(R.string.app_disable_dlg_positive, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - // Disable the app - mMetricsFeatureProvider.action(getContext(), - MetricsEvent.ACTION_SETTINGS_DISABLE_APP); - new DisableChanger(AppInfoDashboardFragment.this, mAppEntry.info, - PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) - .execute((Object)null); - } - }) + public void onClick(DialogInterface dialog, int which) { + // Disable the app + mMetricsFeatureProvider.action(getContext(), + MetricsEvent.ACTION_SETTINGS_DISABLE_APP); + new DisableChanger(AppInfoDashboardFragment.this, + mAppEntry.info, + PackageManager + .COMPONENT_ENABLED_STATE_DISABLED_USER) + .execute((Object) null); + } + }) .setNegativeButton(R.string.dlg_cancel, null) .create(); case DLG_SPECIAL_DISABLE: @@ -476,14 +494,14 @@ public class AppInfoDashboardFragment extends DashboardFragment .setMessage(getActivity().getText(R.string.app_disable_dlg_text)) .setPositiveButton(R.string.app_disable_dlg_positive, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - // Disable the app and ask for uninstall - mMetricsFeatureProvider.action(getContext(), - MetricsEvent.ACTION_SETTINGS_DISABLE_APP); - uninstallPkg(mAppEntry.info.packageName, - false, true); - } - }) + public void onClick(DialogInterface dialog, int which) { + // Disable the app and ask for uninstall + mMetricsFeatureProvider.action(getContext(), + MetricsEvent.ACTION_SETTINGS_DISABLE_APP); + uninstallPkg(mAppEntry.info.packageName, + false, true); + } + }) .setNegativeButton(R.string.dlg_cancel, null) .create(); case DLG_FORCE_STOP: @@ -504,8 +522,8 @@ public class AppInfoDashboardFragment extends DashboardFragment private void uninstallPkg(String packageName, boolean allUsers, boolean andDisable) { stopListeningToPackageRemove(); - // Create new intent to launch Uninstaller activity - final Uri packageURI = Uri.parse("package:"+packageName); + // Create new intent to launch Uninstaller activity + final Uri packageURI = Uri.parse("package:" + packageName); final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI); uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers); mMetricsFeatureProvider.action( @@ -632,7 +650,7 @@ public class AppInfoDashboardFragment extends DashboardFragment if ((info.flags & ApplicationInfo.FLAG_INSTALLED) != 0) { count++; } - } catch(NameNotFoundException e) { + } catch (NameNotFoundException e) { Log.e(TAG, "Package: " + packageName + " not found for user: " + userInfo.id); } } @@ -707,10 +725,10 @@ public class AppInfoDashboardFragment extends DashboardFragment } private void setIntentAndFinish(boolean finish, boolean appChanged) { - if (localLOGV) Log.i(TAG, "appChanged="+appChanged); + if (localLOGV) Log.i(TAG, "appChanged=" + appChanged); final Intent intent = new Intent(); intent.putExtra(ManageApplications.APP_CHG, appChanged); - final SettingsActivity sa = (SettingsActivity)getActivity(); + final SettingsActivity sa = (SettingsActivity) getActivity(); sa.finishPreferencePanel(Activity.RESULT_OK, intent); mFinishing = true; } diff --git a/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java index fd545a7bef5..70313d16c0b 100644 --- a/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java +++ b/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBase.java @@ -32,16 +32,14 @@ import com.android.settings.core.BasePreferenceController; public abstract class AppInfoPreferenceControllerBase extends BasePreferenceController implements AppInfoDashboardFragment.Callback { - protected final AppInfoDashboardFragment mParent; - private final Class mDetailFragmenClass; - + protected AppInfoDashboardFragment mParent; protected Preference mPreference; - public AppInfoPreferenceControllerBase(Context context, AppInfoDashboardFragment parent, - String preferenceKey) { + private final Class mDetailFragmentClass; + + public AppInfoPreferenceControllerBase(Context context, String preferenceKey) { super(context, preferenceKey); - mParent = parent; - mDetailFragmenClass = getDetailFragmentClass(); + mDetailFragmentClass = getDetailFragmentClass(); } @Override @@ -57,9 +55,9 @@ public abstract class AppInfoPreferenceControllerBase extends BasePreferenceCont @Override public boolean handlePreferenceTreeClick(Preference preference) { - if (TextUtils.equals(preference.getKey(), mPreferenceKey) && mDetailFragmenClass != null) { + if (TextUtils.equals(preference.getKey(), mPreferenceKey) && mDetailFragmentClass != null) { AppInfoDashboardFragment.startAppInfoFragment( - mDetailFragmenClass, -1, getArguments(), mParent, mParent.getAppEntry()); + mDetailFragmentClass, -1, getArguments(), mParent, mParent.getAppEntry()); return true; } return false; @@ -70,6 +68,11 @@ public abstract class AppInfoPreferenceControllerBase extends BasePreferenceCont updateState(mPreference); } + public void setParentFragment(AppInfoDashboardFragment parent) { + mParent = parent; + parent.addToCallbackList(this); + } + /** * Gets the fragment class to be launched when the preference is clicked. * @return the fragment to launch diff --git a/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceController.java b/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceController.java index 1fdc690d8d1..3b3790b4f0e 100644 --- a/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceController.java @@ -28,18 +28,12 @@ import com.android.settingslib.applications.AppUtils; public class AppInstallerInfoPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY_APP_INSTALLER_INFO = "app_info_store"; + private String mPackageName; + private String mInstallerPackage; + private CharSequence mInstallerLabel; - private final String mPackageName; - private final String mInstallerPackage; - private final CharSequence mInstallerLabel; - - public AppInstallerInfoPreferenceController(Context context, AppInfoDashboardFragment parent, - String packageName) { - super(context, parent, KEY_APP_INSTALLER_INFO); - mPackageName = packageName; - mInstallerPackage = AppStoreUtil.getInstallerPackageName(mContext, mPackageName); - mInstallerLabel = Utils.getApplicationLabel(mContext, mInstallerPackage); + public AppInstallerInfoPreferenceController(Context context, String key) { + super(context, key); } @Override @@ -47,7 +41,7 @@ public class AppInstallerInfoPreferenceController extends AppInfoPreferenceContr if (UserManager.get(mContext).isManagedProfile()) { return DISABLED_FOR_USER; } - return mInstallerLabel!= null ? AVAILABLE : DISABLED_FOR_USER; + return mInstallerLabel != null ? AVAILABLE : DISABLED_FOR_USER; } @Override @@ -65,4 +59,9 @@ public class AppInstallerInfoPreferenceController extends AppInfoPreferenceContr } } + public void setPackageName(String packageName) { + mPackageName = packageName; + mInstallerPackage = AppStoreUtil.getInstallerPackageName(mContext, mPackageName); + mInstallerLabel = Utils.getApplicationLabel(mContext, mInstallerPackage); + } } diff --git a/src/com/android/settings/applications/appinfo/AppInstallerPreferenceCategoryController.java b/src/com/android/settings/applications/appinfo/AppInstallerPreferenceCategoryController.java index 0e6ffe8dcd2..4a5c3368967 100644 --- a/src/com/android/settings/applications/appinfo/AppInstallerPreferenceCategoryController.java +++ b/src/com/android/settings/applications/appinfo/AppInstallerPreferenceCategoryController.java @@ -19,17 +19,11 @@ package com.android.settings.applications.appinfo; import android.content.Context; import com.android.settings.widget.PreferenceCategoryController; -import com.android.settingslib.core.AbstractPreferenceController; - -import java.util.List; public class AppInstallerPreferenceCategoryController extends PreferenceCategoryController { - private static final String KEY_APP_INSTALLER_INFO_CATEGORY = "app_installer"; - - public AppInstallerPreferenceCategoryController(Context context, - List childrenControllers) { - super(context, KEY_APP_INSTALLER_INFO_CATEGORY, childrenControllers); + public AppInstallerPreferenceCategoryController(Context context, String key) { + super(context, key); } } diff --git a/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java b/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java index 5a970f6f390..87fa9cab79f 100644 --- a/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppNotificationPreferenceController.java @@ -29,14 +29,18 @@ import com.android.settingslib.applications.ApplicationsState; public class AppNotificationPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY_NOTIFICATION = "notification_settings"; private String mChannelId = null; // Used for updating notification preference. private final NotificationBackend mBackend = new NotificationBackend(); - public AppNotificationPreferenceController(Context context, AppInfoDashboardFragment parent) { - super(context, parent, KEY_NOTIFICATION); + public AppNotificationPreferenceController(Context context, String key) { + super(context, key); + } + + @Override + public void setParentFragment(AppInfoDashboardFragment parent) { + super.setParentFragment(parent); if (parent != null && parent.getActivity() != null && parent.getActivity().getIntent() != null) { mChannelId = parent.getActivity().getIntent().getStringExtra(EXTRA_FRAGMENT_ARG_KEY); @@ -63,6 +67,7 @@ public class AppNotificationPreferenceController extends AppInfoPreferenceContro return bundle; } + private CharSequence getNotificationSummary(ApplicationsState.AppEntry appEntry, Context context, NotificationBackend backend) { NotificationBackend.AppRow appRow = diff --git a/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceController.java b/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceController.java index 3f20381dbb5..a16a74d4bf9 100644 --- a/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceController.java @@ -32,13 +32,11 @@ import com.android.settingslib.applications.ApplicationsState; public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY_LAUNCH = "preferred_settings"; - private IUsbManager mUsbManager; private PackageManager mPackageManager; - public AppOpenByDefaultPreferenceController(Context context, AppInfoDashboardFragment parent) { - super(context, parent, KEY_LAUNCH); + public AppOpenByDefaultPreferenceController(Context context, String key) { + super(context, key); mUsbManager = IUsbManager.Stub.asInterface(ServiceManager.getService(Context.USB_SERVICE)); mPackageManager = context.getPackageManager(); } @@ -49,9 +47,9 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr final ApplicationsState.AppEntry appEntry = mParent.getAppEntry(); if (appEntry == null || appEntry.info == null) { mPreference.setEnabled(false); - } else if ((appEntry.info.flags& ApplicationInfo.FLAG_INSTALLED) == 0 - || !appEntry.info.enabled) { - mPreference.setEnabled(false); + } else if ((appEntry.info.flags & ApplicationInfo.FLAG_INSTALLED) == 0 + || !appEntry.info.enabled) { + mPreference.setEnabled(false); } } diff --git a/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java b/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java index b844f785d90..c61dd43ab13 100644 --- a/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java @@ -34,10 +34,9 @@ import java.util.List; public class AppPermissionPreferenceController extends AppInfoPreferenceControllerBase { private static final String TAG = "PermissionPrefControl"; - private static final String KEY_PERMISSION = "permission_settings"; private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton"; - private final String mPackageName; + private String mPackageName; @VisibleForTesting final PermissionsSummaryHelper.PermissionsResultCallback mPermissionCallback @@ -76,10 +75,8 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll } }; - public AppPermissionPreferenceController(Context context, AppInfoDashboardFragment parent, - String packageName) { - super(context, parent, KEY_PERMISSION); - mPackageName = packageName; + public AppPermissionPreferenceController(Context context, String key) { + super(context, key); } @Override @@ -89,13 +86,17 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll @Override public boolean handlePreferenceTreeClick(Preference preference) { - if (KEY_PERMISSION.equals(preference.getKey())) { + if (getPreferenceKey().equals(preference.getKey())) { startManagePermissionsActivity(); return true; } return false; } + public void setPackageName(String packageName) { + mPackageName = packageName; + } + private void startManagePermissionsActivity() { // start new activity to manage app permissions final Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS); @@ -107,5 +108,4 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll Log.w(TAG, "No app can handle android.intent.action.MANAGE_APP_PERMISSIONS"); } } - } diff --git a/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java b/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java index 86383cb0678..913a6bd3c39 100644 --- a/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppStoragePreferenceController.java @@ -31,7 +31,6 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.applications.AppStorageSettings; import com.android.settings.applications.FetchPackageStorageAsyncLoader; import com.android.settingslib.applications.StorageStatsSource; -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; @@ -40,15 +39,10 @@ public class AppStoragePreferenceController extends AppInfoPreferenceControllerB implements LoaderManager.LoaderCallbacks, LifecycleObserver, OnResume, OnPause { - private static final String KEY_STORAGE = "storage_settings"; private StorageStatsSource.AppStorageStats mLastResult; - public AppStoragePreferenceController(Context context, AppInfoDashboardFragment parent, - Lifecycle lifecycle) { - super(context, parent, KEY_STORAGE); - if (lifecycle != null) { - lifecycle.addObserver(this); - } + public AppStoragePreferenceController(Context context, String key) { + super(context, key); } @Override diff --git a/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java b/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java index 0cfeb008a3b..205b6d275ee 100644 --- a/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppVersionPreferenceController.java @@ -17,23 +17,19 @@ package com.android.settings.applications.appinfo; import android.content.Context; -import android.support.v7.preference.Preference; import android.text.BidiFormatter; import com.android.settings.R; public class AppVersionPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY_VERSION = "app_version"; - - public AppVersionPreferenceController(Context context, AppInfoDashboardFragment parent) { - super(context, parent, KEY_VERSION); + public AppVersionPreferenceController(Context context, String key) { + super(context, key); } @Override - public void updateState(Preference preference) { - preference.setSummary(mContext.getString(R.string.version_text, - BidiFormatter.getInstance().unicodeWrap(mParent.getPackageInfo().versionName))); + public CharSequence getSummary() { + return mContext.getString(R.string.version_text, + BidiFormatter.getInstance().unicodeWrap(mParent.getPackageInfo().versionName)); } - } diff --git a/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java b/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java index ca63575f363..5274e28bb0a 100644 --- a/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java @@ -26,10 +26,8 @@ import com.android.settings.SettingsPreferenceFragment; public class DrawOverlayDetailPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY = "system_alert_window"; - - public DrawOverlayDetailPreferenceController(Context context, AppInfoDashboardFragment parent) { - super(context, parent, KEY); + public DrawOverlayDetailPreferenceController(Context context, String key) { + super(context, key); } @Override diff --git a/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java b/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java index 6fb6dc356c9..a1e85364266 100644 --- a/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java @@ -26,14 +26,10 @@ import com.android.settings.applications.AppStateInstallAppsBridge; public class ExternalSourceDetailPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY = "install_other_apps"; + private String mPackageName; - private final String mPackageName; - - public ExternalSourceDetailPreferenceController(Context context, - AppInfoDashboardFragment parent, String packageName) { - super(context, parent, KEY); - mPackageName = packageName; + public ExternalSourceDetailPreferenceController(Context context, String key) { + super(context, key); } @Override @@ -67,4 +63,7 @@ public class ExternalSourceDetailPreferenceController extends AppInfoPreferenceC return appState.isPotentialAppSource(); } + public void setPackageName(String packageName) { + mPackageName = packageName; + } } diff --git a/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceController.java b/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceController.java index d89c538d764..211abf517d1 100644 --- a/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceController.java @@ -28,13 +28,10 @@ import java.util.Set; public class InstantAppDomainsPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY_INSTANT_APP_SUPPORTED_LINKS = - "instant_app_launch_supported_domain_urls"; - private PackageManager mPackageManager; - public InstantAppDomainsPreferenceController(Context context, AppInfoDashboardFragment parent) { - super(context, parent, KEY_INSTANT_APP_SUPPORTED_LINKS); + public InstantAppDomainsPreferenceController(Context context, String key) { + super(context, key); mPackageManager = mContext.getPackageManager(); } diff --git a/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceController.java b/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceController.java index 202317ae473..321fe653bdc 100644 --- a/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceController.java @@ -28,17 +28,15 @@ import com.android.settings.SettingsPreferenceFragment; public class PictureInPictureDetailPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY = "picture_in_picture"; private static final String TAG = "PicInPicDetailControl"; private final PackageManager mPackageManager; - private final String mPackageName; - public PictureInPictureDetailPreferenceController(Context context, - AppInfoDashboardFragment parent, String packageName) { - super(context, parent, KEY); + private String mPackageName; + + public PictureInPictureDetailPreferenceController(Context context, String key) { + super(context, key); mPackageManager = context.getPackageManager(); - mPackageName = packageName; } @Override @@ -78,4 +76,8 @@ public class PictureInPictureDetailPreferenceController extends AppInfoPreferenc return PictureInPictureDetails.getPreferenceSummary(mContext, mParent.getPackageInfo().applicationInfo.uid, mPackageName); } + + public void setPackageName(String packageName) { + mPackageName = packageName; + } } diff --git a/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java b/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java index 71532eaa4a8..1e074d018ea 100644 --- a/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java @@ -26,11 +26,8 @@ import com.android.settings.SettingsPreferenceFragment; public class WriteSystemSettingsPreferenceController extends AppInfoPreferenceControllerBase { - private static final String KEY = "write_settings_apps"; - - public WriteSystemSettingsPreferenceController(Context context, - AppInfoDashboardFragment parent) { - super(context, parent, KEY); + public WriteSystemSettingsPreferenceController(Context context, String prefKey) { + super(context, prefKey); } @Override diff --git a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java index a0ad55146ca..b426d287f9c 100644 --- a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java +++ b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java @@ -83,8 +83,8 @@ public class EnterprisePrivacySettings extends DashboardFragment { exposureChangesCategoryControllers.add(new CaCertsManagedProfilePreferenceController( context)); controllers.addAll(exposureChangesCategoryControllers); - controllers.add(new PreferenceCategoryController(context, "exposure_changes_category", - exposureChangesCategoryControllers)); + controllers.add(new PreferenceCategoryController(context, "exposure_changes_category") + .setChildren(exposureChangesCategoryControllers)); controllers.add(new FailedPasswordWipeCurrentUserPreferenceController(context)); controllers.add(new FailedPasswordWipeManagedProfilePreferenceController(context)); return controllers; diff --git a/src/com/android/settings/language/LanguageAndInputSettings.java b/src/com/android/settings/language/LanguageAndInputSettings.java index c69938c1be1..126f3c848df 100644 --- a/src/com/android/settings/language/LanguageAndInputSettings.java +++ b/src/com/android/settings/language/LanguageAndInputSettings.java @@ -105,7 +105,7 @@ public class LanguageAndInputSettings extends DashboardFragment { controllers.add(virtualKeyboardPreferenceController); controllers.add(physicalKeyboardPreferenceController); controllers.add(new PreferenceCategoryController(context, - KEY_KEYBOARDS_CATEGORY, + KEY_KEYBOARDS_CATEGORY).setChildren( Arrays.asList(virtualKeyboardPreferenceController, physicalKeyboardPreferenceController))); @@ -116,7 +116,7 @@ public class LanguageAndInputSettings extends DashboardFragment { final PointerSpeedController pointerController = new PointerSpeedController(context); controllers.add(pointerController); controllers.add(new PreferenceCategoryController(context, - KEY_POINTER_AND_TTS_CATEGORY, + KEY_POINTER_AND_TTS_CATEGORY).setChildren( Arrays.asList(pointerController, ttsPreferenceController))); // Input Assistance @@ -132,7 +132,7 @@ public class LanguageAndInputSettings extends DashboardFragment { } controllers.add(gameControllerPreferenceController); controllers.add(new PreferenceCategoryController(context, - KEY_GAME_CONTROLLER_CATEGORY, + KEY_GAME_CONTROLLER_CATEGORY).setChildren( Arrays.asList(gameControllerPreferenceController))); return controllers; diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index a12de6170cc..9550758656b 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -229,7 +229,7 @@ public class SoundSettings extends DashboardFragment { controllers.add(bootSoundPreferenceController); controllers.add(emergencyTonePreferenceController); controllers.add(new PreferenceCategoryController(context, - "other_sounds_and_vibrations_category", + "other_sounds_and_vibrations_category").setChildren( Arrays.asList(dialPadTonePreferenceController, screenLockSoundPreferenceController, chargingSoundPreferenceController, diff --git a/src/com/android/settings/security/EncryptionAndCredential.java b/src/com/android/settings/security/EncryptionAndCredential.java index 6dae9b7b513..66ae20b08ca 100644 --- a/src/com/android/settings/security/EncryptionAndCredential.java +++ b/src/com/android/settings/security/EncryptionAndCredential.java @@ -70,7 +70,7 @@ public class EncryptionAndCredential extends DashboardFragment { PREF_KEY_ENCRYPTION_DETAIL_PAGE); controllers.add(encryptStatusController); controllers.add(new PreferenceCategoryController(context, - "encryption_and_credentials_status_category", + "encryption_and_credentials_status_category").setChildren( Arrays.asList(encryptStatusController))); controllers.add(new CredentialStoragePreferenceController(context)); controllers.add(new UserCredentialsPreferenceController(context)); diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java index e4d5ef55699..0839450a93c 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -128,8 +128,8 @@ public class SecuritySettings extends DashboardFragment { securityPreferenceControllers.add(new FingerprintStatusPreferenceController(context)); securityPreferenceControllers.add(new LockScreenPreferenceController(context, lifecycle)); securityPreferenceControllers.add(new ChangeScreenLockPreferenceController(context, host)); - controllers.add(new PreferenceCategoryController(context, SECURITY_CATEGORY, - securityPreferenceControllers)); + controllers.add(new PreferenceCategoryController(context, SECURITY_CATEGORY) + .setChildren(securityPreferenceControllers)); controllers.addAll(securityPreferenceControllers); final List profileSecurityControllers = new ArrayList<>(); @@ -139,8 +139,8 @@ public class SecuritySettings extends DashboardFragment { profileSecurityControllers.add(new VisiblePatternProfilePreferenceController( context, lifecycle)); profileSecurityControllers.add(new FingerprintProfileStatusPreferenceController(context)); - controllers.add(new PreferenceCategoryController(context, WORK_PROFILE_SECURITY_CATEGORY, - profileSecurityControllers)); + controllers.add(new PreferenceCategoryController(context, WORK_PROFILE_SECURITY_CATEGORY) + .setChildren(profileSecurityControllers)); controllers.addAll(profileSecurityControllers); return controllers; diff --git a/src/com/android/settings/slices/SliceBroadcastReceiver.java b/src/com/android/settings/slices/SliceBroadcastReceiver.java index f47aeb2783d..06b1b62e369 100644 --- a/src/com/android/settings/slices/SliceBroadcastReceiver.java +++ b/src/com/android/settings/slices/SliceBroadcastReceiver.java @@ -22,6 +22,7 @@ import static com.android.settings.slices.SettingsSliceProvider.ACTION_WIFI_CHAN import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLATFORM_DEFINED; +import android.app.slice.Slice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -36,8 +37,6 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.core.SliderPreferenceController; import com.android.settings.core.TogglePreferenceController; -import android.app.slice.Slice; - import androidx.slice.core.SliceHints; /** diff --git a/src/com/android/settings/widget/PreferenceCategoryController.java b/src/com/android/settings/widget/PreferenceCategoryController.java index 98364769e47..cdd814c1d8f 100644 --- a/src/com/android/settings/widget/PreferenceCategoryController.java +++ b/src/com/android/settings/widget/PreferenceCategoryController.java @@ -18,9 +18,10 @@ package com.android.settings.widget; import android.content.Context; -import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.core.BasePreferenceController; import com.android.settingslib.core.AbstractPreferenceController; +import java.util.ArrayList; import java.util.List; /** @@ -28,35 +29,42 @@ import java.util.List; * not-available, this controller will also report not-available, and subsequently will be hidden by * UI. */ -public class PreferenceCategoryController extends AbstractPreferenceController - implements PreferenceControllerMixin { +public class PreferenceCategoryController extends BasePreferenceController { private final String mKey; private final List mChildren; - public PreferenceCategoryController(Context context, - String key, List childrenControllers) { - super(context); + public PreferenceCategoryController(Context context, String key) { + super(context, key); mKey = key; - mChildren = childrenControllers; + mChildren = new ArrayList<>(); } @Override - public boolean isAvailable() { + public int getAvailabilityStatus() { if (mChildren == null || mChildren.isEmpty()) { - return true; + return DISABLED_DEPENDENT_SETTING; } // Category is available if any child is available for (AbstractPreferenceController controller : mChildren) { if (controller.isAvailable()) { - return true; + return AVAILABLE; } } - return false; + return DISABLED_DEPENDENT_SETTING; } @Override public String getPreferenceKey() { return mKey; } + + public PreferenceCategoryController setChildren( + List childrenController) { + mChildren.clear(); + if (childrenController != null) { + mChildren.addAll(childrenController); + } + return this; + } } diff --git a/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor b/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor index af67ad6766b..85cf92b8955 100644 --- a/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor +++ b/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor @@ -1,20 +1,8 @@ com.android.settings.applications.appinfo.AppActionButtonPreferenceController com.android.settings.applications.appinfo.AppBatteryPreferenceController -com.android.settings.applications.appinfo.AppDataUsagePreferenceController com.android.settings.applications.appinfo.AppHeaderViewPreferenceController -com.android.settings.applications.appinfo.AppInstallerInfoPreferenceController com.android.settings.applications.appinfo.AppMemoryPreferenceController -com.android.settings.applications.appinfo.AppNotificationPreferenceController -com.android.settings.applications.appinfo.AppOpenByDefaultPreferenceController -com.android.settings.applications.appinfo.AppPermissionPreferenceController -com.android.settings.applications.appinfo.AppStoragePreferenceController -com.android.settings.applications.appinfo.AppVersionPreferenceController -com.android.settings.applications.appinfo.DrawOverlayDetailPreferenceController -com.android.settings.applications.appinfo.ExternalSourceDetailPreferenceController com.android.settings.applications.appinfo.InstantAppButtonsPreferenceController -com.android.settings.applications.appinfo.InstantAppDomainsPreferenceController -com.android.settings.applications.appinfo.PictureInPictureDetailPreferenceController -com.android.settings.applications.appinfo.WriteSystemSettingsPreferenceController com.android.settings.bluetooth.BluetoothDeviceNamePreferenceController com.android.settings.bluetooth.BluetoothDeviceRenamePreferenceController com.android.settings.bluetooth.BluetoothSwitchPreferenceController diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java index b667fdbb03c..f87be57e7f5 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java @@ -63,8 +63,8 @@ public class AppDataUsagePreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - mController = spy( - new AppDataUsagePreferenceController(mContext, mFragment, null /* lifecycle */)); + mController = spy(new AppDataUsagePreferenceController(mContext, "test_key")); + mController.setParentFragment(mFragment); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java index ec6ac2414e0..89c66056725 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java @@ -102,7 +102,8 @@ public class AppInfoPreferenceControllerBaseTest { private boolean preferenceUpdated; private TestPreferenceController(AppInfoDashboardFragment parent) { - super(RuntimeEnvironment.application, parent, "TestKey"); + super(RuntimeEnvironment.application, "TestKey"); + setParentFragment(parent); } @Override diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceControllerTest.java index 846479f6b39..07093480fc6 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInstallerInfoPreferenceControllerTest.java @@ -74,7 +74,9 @@ public class AppInstallerInfoPreferenceControllerTest { when(mPackageManager.getInstallerPackageName(anyString())).thenReturn(installerPackage); when(mPackageManager.getApplicationInfo(eq(installerPackage), anyInt())) .thenReturn(mAppInfo); - mController = new AppInstallerInfoPreferenceController(mContext, mFragment, "Package1"); + mController = new AppInstallerInfoPreferenceController(mContext, "test_key"); + mController.setPackageName("Package1"); + mController.setParentFragment(mFragment); } @Test @@ -82,7 +84,7 @@ public class AppInstallerInfoPreferenceControllerTest { when(mUserManager.isManagedProfile()).thenReturn(true); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -90,17 +92,19 @@ public class AppInstallerInfoPreferenceControllerTest { when(mUserManager.isManagedProfile()).thenReturn(false); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test public void getAvailabilityStatus_hasAppLabel_shouldReturnAvailable() { when(mUserManager.isManagedProfile()).thenReturn(false); when(mAppInfo.loadLabel(mPackageManager)).thenReturn("Label1"); - mController = new AppInstallerInfoPreferenceController(mContext, mFragment, "Package1"); + mController = new AppInstallerInfoPreferenceController(mContext, "test_key"); + mController.setPackageName("Package1"); + mController.setParentFragment(mFragment); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); + .isEqualTo(BasePreferenceController.AVAILABLE); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppNotificationPreferenceControllerTest.java index ba51b807031..5d24180be36 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppNotificationPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppNotificationPreferenceControllerTest.java @@ -17,7 +17,6 @@ package com.android.settings.applications.appinfo; import static com.android.settings.SettingsActivity.EXTRA_FRAGMENT_ARG_KEY; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; @@ -62,7 +61,8 @@ public class AppNotificationPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mController = spy(new AppNotificationPreferenceController(mContext, mFragment)); + mController = spy(new AppNotificationPreferenceController(mContext, "test_key")); + mController.setParentFragment(mFragment); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); @@ -99,7 +99,8 @@ public class AppNotificationPreferenceControllerTest { when(mFragment.getActivity()).thenReturn(activity); when(activity.getIntent()).thenReturn(intent); AppNotificationPreferenceController controller = - new AppNotificationPreferenceController(mContext, mFragment); + new AppNotificationPreferenceController(mContext, "test"); + controller.setParentFragment(mFragment); assertThat(controller.getArguments().containsKey(EXTRA_FRAGMENT_ARG_KEY)).isTrue(); assertThat(controller.getArguments().getString(EXTRA_FRAGMENT_ARG_KEY)).isEqualTo("test"); diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceControllerTest.java index 848fcd51382..a42e19fb69c 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceControllerTest.java @@ -61,7 +61,8 @@ public class AppOpenByDefaultPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application.getApplicationContext(); - mController = spy(new AppOpenByDefaultPreferenceController(mContext, mFragment)); + mController = spy(new AppOpenByDefaultPreferenceController(mContext, "preferred_app")); + mController.setParentFragment(mFragment); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppPermissionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppPermissionPreferenceControllerTest.java index 43ae303f3c0..89ffef0c9f2 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppPermissionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppPermissionPreferenceControllerTest.java @@ -63,7 +63,10 @@ public class AppPermissionPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mController = new AppPermissionPreferenceController(mContext, mFragment, "Package1"); + mController = new AppPermissionPreferenceController(mContext, "permission_settings"); + mController.setPackageName("package1"); + mController.setParentFragment(mFragment); + when(mScreen.findPreference(any())).thenReturn(mPreference); final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); @@ -133,7 +136,7 @@ public class AppPermissionPreferenceControllerTest { mController.handlePreferenceTreeClick(mPreference); - verify(mActivity).startActivityForResult(argThat(intent-> intent != null && + verify(mActivity).startActivityForResult(argThat(intent -> intent != null && Intent.ACTION_MANAGE_APP_PERMISSIONS.equals(intent.getAction())), anyInt()); } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java index 588db2a2e1c..cebdd6823c2 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppStoragePreferenceControllerTest.java @@ -57,8 +57,8 @@ public class AppStoragePreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application.getApplicationContext(); - mController = - spy(new AppStoragePreferenceController(mContext, mFragment, null /* lifecycle */)); + mController = spy(new AppStoragePreferenceController(mContext, "key")); + mController.setParentFragment(mFragment); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java index 928e9eb0b8c..1fc35c5afa7 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppVersionPreferenceControllerTest.java @@ -48,7 +48,8 @@ public class AppVersionPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mController = new AppVersionPreferenceController(mContext, mFragment); + mController = new AppVersionPreferenceController(mContext, "test_key"); + mController.setParentFragment(mFragment); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceControllerTest.java index de3f868e66f..4ea011c4ee7 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceControllerTest.java @@ -57,7 +57,8 @@ public class DrawOverlayDetailPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); - mController = spy(new DrawOverlayDetailPreferenceController(mContext, mFragment)); + mController = spy(new DrawOverlayDetailPreferenceController(mContext, "key")); + mController.setParentFragment(mFragment); final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); } @@ -67,7 +68,7 @@ public class DrawOverlayDetailPreferenceControllerTest { when(mUserManager.isManagedProfile()).thenReturn(true); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -76,7 +77,7 @@ public class DrawOverlayDetailPreferenceControllerTest { when(mFragment.getPackageInfo()).thenReturn(new PackageInfo()); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -87,7 +88,7 @@ public class DrawOverlayDetailPreferenceControllerTest { when(mFragment.getPackageInfo()).thenReturn(info); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -98,7 +99,7 @@ public class DrawOverlayDetailPreferenceControllerTest { when(mFragment.getPackageInfo()).thenReturn(info); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); + .isEqualTo(BasePreferenceController.AVAILABLE); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java index 7ad3d1853de..dae72fc7ac2 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java @@ -54,8 +54,9 @@ public class ExternalSourceDetailPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); - mController = spy( - new ExternalSourceDetailPreferenceController(mContext, mFragment, "Package1")); + mController = spy(new ExternalSourceDetailPreferenceController(mContext, "test_key")); + mController.setPackageName("Package1"); + mController.setParentFragment(mFragment); final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); } @@ -65,7 +66,7 @@ public class ExternalSourceDetailPreferenceControllerTest { when(mUserManager.isManagedProfile()).thenReturn(true); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -74,7 +75,7 @@ public class ExternalSourceDetailPreferenceControllerTest { doReturn(false).when(mController).isPotentialAppSource(); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -83,7 +84,7 @@ public class ExternalSourceDetailPreferenceControllerTest { doReturn(true).when(mController).isPotentialAppSource(); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); + .isEqualTo(BasePreferenceController.AVAILABLE); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceControllerTest.java index 5dc09e51ae6..7e1584842e3 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppDomainsPreferenceControllerTest.java @@ -62,7 +62,7 @@ public class InstantAppDomainsPreferenceControllerTest { private InstantAppDomainsPreferenceController mController; @Before - public void setUp() throws PackageManager.NameNotFoundException { + public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getPackageManager()).thenReturn(mPackageManager); @@ -70,7 +70,8 @@ public class InstantAppDomainsPreferenceControllerTest { packageInfo.applicationInfo = mAppInfo; packageInfo.packageName = "Package1"; when(mFragment.getPackageInfo()).thenReturn(packageInfo); - mController = new InstantAppDomainsPreferenceController(mContext, mFragment); + mController = new InstantAppDomainsPreferenceController(mContext, "test_key"); + mController.setParentFragment(mFragment); } @Test @@ -79,7 +80,7 @@ public class InstantAppDomainsPreferenceControllerTest { (InstantAppDataProvider) (i -> false)); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -88,12 +89,12 @@ public class InstantAppDomainsPreferenceControllerTest { (InstantAppDataProvider) (i -> true)); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); + .isEqualTo(BasePreferenceController.AVAILABLE); } @Test public void updateState_shouldSetPreferenceTitle() { - final String[] domain = { "Domain1" }; + final String[] domain = {"Domain1"}; final ArraySet domains = new ArraySet<>(); domains.add(domain[0]); final List infoList = new ArrayList<>(); diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceControllerTest.java index ddd1b216498..47d73233be8 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/PictureInPictureDetailPreferenceControllerTest.java @@ -52,8 +52,10 @@ public class PictureInPictureDetailPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - mController = spy( - new PictureInPictureDetailPreferenceController(mContext, mFragment, "Package1")); + mController = spy(new PictureInPictureDetailPreferenceController(mContext, "test_key")); + mController.setPackageName("Package1"); + mController.setParentFragment(mFragment); + final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); } @@ -63,7 +65,7 @@ public class PictureInPictureDetailPreferenceControllerTest { doReturn(false).when(mController).hasPictureInPictureActivites(); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); + .isEqualTo(BasePreferenceController.DISABLED_FOR_USER); } @Test @@ -71,7 +73,7 @@ public class PictureInPictureDetailPreferenceControllerTest { doReturn(true).when(mController).hasPictureInPictureActivites(); assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); + .isEqualTo(BasePreferenceController.AVAILABLE); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceControllerTest.java index c158595a84d..b7498750216 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceControllerTest.java @@ -57,7 +57,8 @@ public class WriteSystemSettingsPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); - mController = spy(new WriteSystemSettingsPreferenceController(mContext, mFragment)); + mController = spy(new WriteSystemSettingsPreferenceController(mContext, "test_key")); + mController.setParentFragment(mFragment); final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); } diff --git a/tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java b/tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java index 7ae592c344e..5895db25a70 100644 --- a/tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java +++ b/tests/robotests/src/com/android/settings/widget/PreferenceCategoryControllerTest.java @@ -44,12 +44,12 @@ public class PreferenceCategoryControllerTest { public void setUp() { mContext = RuntimeEnvironment.application; mChildren = new ArrayList<>(); - mController = new PreferenceCategoryController(mContext, "pref_key", mChildren); + mController = new PreferenceCategoryController(mContext, "pref_key").setChildren(mChildren); } @Test - public void isAvailable_noChildren_true() { - assertThat(mController.isAvailable()).isTrue(); + public void isAvailable_noChildren_false() { + assertThat(mController.isAvailable()).isFalse(); } @Test @@ -57,6 +57,7 @@ public class PreferenceCategoryControllerTest { final AbstractPreferenceController child = mock(AbstractPreferenceController.class); when(child.isAvailable()).thenReturn(true); mChildren.add(child); + mController.setChildren(mChildren); assertThat(mController.isAvailable()).isTrue(); } @@ -66,6 +67,7 @@ public class PreferenceCategoryControllerTest { final AbstractPreferenceController child = mock(AbstractPreferenceController.class); when(child.isAvailable()).thenReturn(false); mChildren.add(child); + mController.setChildren(mChildren); assertThat(mController.isAvailable()).isFalse(); }