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 extends SettingsPreferenceFragment> mDetailFragmenClass;
-
+ protected AppInfoDashboardFragment mParent;
protected Preference mPreference;
- public AppInfoPreferenceControllerBase(Context context, AppInfoDashboardFragment parent,
- String preferenceKey) {
+ private final Class extends SettingsPreferenceFragment> 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();
}