diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml index 84b80b8d419..9fc29c3e83f 100644 --- a/res/xml/app_and_notification.xml +++ b/res/xml/app_and_notification.xml @@ -55,7 +55,8 @@ android:key="manage_perms" android:title="@string/app_permissions" android:order="12" - settings:keywords="@string/keywords_app_permissions"> + settings:keywords="@string/keywords_app_permissions" + settings:controller="com.android.settings.applications.AppPermissionsPreferenceController"> @@ -76,4 +77,4 @@ android:title="@string/special_access" android:order="20" /> - \ No newline at end of file + diff --git a/src/com/android/settings/accessibility/VibrationIntensityPreferenceController.java b/src/com/android/settings/accessibility/VibrationIntensityPreferenceController.java index 0e24a10651b..ea212cf4d3f 100644 --- a/src/com/android/settings/accessibility/VibrationIntensityPreferenceController.java +++ b/src/com/android/settings/accessibility/VibrationIntensityPreferenceController.java @@ -49,7 +49,7 @@ public abstract class VibrationIntensityPreferenceController extends BasePrefere mSettingsContentObserver = new SettingObserver(settingKey) { @Override public void onChange(boolean selfChange, Uri uri) { - updateState(null); + updateState(mPreference); } }; } @@ -73,14 +73,6 @@ public abstract class VibrationIntensityPreferenceController extends BasePrefere mPreference = screen.findPreference(getPreferenceKey()); } - @Override - public void updateState(Preference preference) { - if (mPreference == null) { - return; - } - mPreference.setSummary(getSummary()); - } - @Override public CharSequence getSummary() { final int intensity = Settings.System.getInt(mContext.getContentResolver(), diff --git a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java index 7b62078339d..eb74fb13861 100644 --- a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java +++ b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java @@ -75,7 +75,6 @@ public class AppAndNotificationDashboardFragment extends DashboardFragment { controllers.add(new EmergencyBroadcastPreferenceController(context, "app_and_notif_cell_broadcast_settings")); controllers.add(new SpecialAppAccessPreferenceController(context)); - controllers.add(new AppPermissionsPreferenceController(context)); controllers.add(new RecentAppsPreferenceController(context, app, host)); return controllers; } diff --git a/src/com/android/settings/applications/AppPermissionsPreferenceController.java b/src/com/android/settings/applications/AppPermissionsPreferenceController.java index 9bd8c0b3393..206ef339122 100644 --- a/src/com/android/settings/applications/AppPermissionsPreferenceController.java +++ b/src/com/android/settings/applications/AppPermissionsPreferenceController.java @@ -19,55 +19,40 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; -import android.support.v7.preference.Preference; import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; + import com.android.settings.R; -import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settings.core.BasePreferenceController; import java.util.List; import java.util.Set; -public class AppPermissionsPreferenceController extends AbstractPreferenceController - implements PreferenceControllerMixin { +public class AppPermissionsPreferenceController extends BasePreferenceController { private static final String TAG = "AppPermissionPrefCtrl"; private static final String KEY_APP_PERMISSION_GROUPS = "manage_perms"; private static final String[] PERMISSION_GROUPS = new String[] { - "android.permission-group.LOCATION", - "android.permission-group.MICROPHONE", - "android.permission-group.CAMERA", - "android.permission-group.SMS", - "android.permission-group.CONTACTS", - "android.permission-group.PHONE"}; + "android.permission-group.LOCATION", + "android.permission-group.MICROPHONE", + "android.permission-group.CAMERA", + "android.permission-group.SMS", + "android.permission-group.CONTACTS", + "android.permission-group.PHONE"}; private static final int NUM_PERMISSION_TO_USE = 3; private final PackageManager mPackageManager; public AppPermissionsPreferenceController(Context context) { - super(context); + super(context, KEY_APP_PERMISSION_GROUPS); mPackageManager = context.getPackageManager(); } @Override - public boolean isAvailable() { - return true; - } - - @Override - public String getPreferenceKey() { - return KEY_APP_PERMISSION_GROUPS; - } - - @Override - public void updateState(Preference preference) { - final CharSequence summary = getSummary(); - if (summary != null) { - preference.setSummary(summary); - } + public int getAvailabilityStatus() { + return AVAILABLE; } /* @@ -96,7 +81,7 @@ public class AppPermissionsPreferenceController extends AbstractPreferenceContro private Set getGrantedPermissionGroups(Set permissions) { ArraySet grantedPermissionGroups = new ArraySet<>(); List installedPackages = - mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS); + mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS); for (PackageInfo installedPackage : installedPackages) { if (installedPackage.permissions == null) { continue; @@ -134,12 +119,12 @@ public class AppPermissionsPreferenceController extends AbstractPreferenceContro for (String group : PERMISSION_GROUPS) { try { final List permissions = - mPackageManager.queryPermissionsByGroup(group, 0); + mPackageManager.queryPermissionsByGroup(group, 0); for (PermissionInfo permissionInfo : permissions) { result.add(permissionInfo.name); } } catch (NameNotFoundException e) { - Log.e(TAG, "Error getting permissions in group "+group, e); + Log.e(TAG, "Error getting permissions in group " + group, e); } } return result; diff --git a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java index 8952de0b6b8..cf1731d31ac 100644 --- a/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java +++ b/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java @@ -49,11 +49,6 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre return hasAppCapability() ? AVAILABLE : DISABLED_UNSUPPORTED; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override public CharSequence getSummary() { int summaryResId = isDefaultApp() ? R.string.yes : R.string.no; diff --git a/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java b/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java index 21c619519d1..ca63575f363 100644 --- a/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/DrawOverlayDetailPreferenceController.java @@ -21,7 +21,6 @@ import static android.Manifest.permission.SYSTEM_ALERT_WINDOW; import android.content.Context; import android.content.pm.PackageInfo; import android.os.UserManager; -import android.support.v7.preference.Preference; import com.android.settings.SettingsPreferenceFragment; @@ -50,11 +49,6 @@ public class DrawOverlayDetailPreferenceController extends AppInfoPreferenceCont return DISABLED_FOR_USER; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override protected Class getDetailFragmentClass() { return DrawOverlayDetails.class; diff --git a/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java b/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java index ec69b85a9f0..71532eaa4a8 100644 --- a/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/WriteSystemSettingsPreferenceController.java @@ -21,7 +21,6 @@ import static android.Manifest.permission.WRITE_SETTINGS; import android.content.Context; import android.content.pm.PackageInfo; import android.os.UserManager; -import android.support.v7.preference.Preference; import com.android.settings.SettingsPreferenceFragment; @@ -51,11 +50,6 @@ public class WriteSystemSettingsPreferenceController extends AppInfoPreferenceCo return DISABLED_FOR_USER; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override protected Class getDetailFragmentClass() { return WriteSettingsDetails.class; diff --git a/src/com/android/settings/backup/BackupSettingsActivityPreferenceController.java b/src/com/android/settings/backup/BackupSettingsActivityPreferenceController.java index 1070ae9df66..183d13f0033 100644 --- a/src/com/android/settings/backup/BackupSettingsActivityPreferenceController.java +++ b/src/com/android/settings/backup/BackupSettingsActivityPreferenceController.java @@ -19,7 +19,6 @@ package com.android.settings.backup; import android.app.backup.BackupManager; import android.content.Context; import android.os.UserManager; -import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; @@ -45,11 +44,6 @@ public class BackupSettingsActivityPreferenceController extends BasePreferenceCo : DISABLED_UNSUPPORTED; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override public CharSequence getSummary() { final boolean backupEnabled = mBackupManager.isBackupEnabled(); diff --git a/src/com/android/settings/core/PreferenceControllerListHelper.java b/src/com/android/settings/core/PreferenceControllerListHelper.java index d955301d175..bec7c094ea2 100644 --- a/src/com/android/settings/core/PreferenceControllerListHelper.java +++ b/src/com/android/settings/core/PreferenceControllerListHelper.java @@ -41,7 +41,7 @@ import java.util.TreeSet; */ public class PreferenceControllerListHelper { - private static final String TAG = "PrefCtrlListCreator"; + private static final String TAG = "PrefCtrlListHelper"; /** * Instantiates a list of controller based on xml definition. diff --git a/src/com/android/settings/display/ColorModePreferenceController.java b/src/com/android/settings/display/ColorModePreferenceController.java index f3435d0612a..7fa978209d7 100644 --- a/src/com/android/settings/display/ColorModePreferenceController.java +++ b/src/com/android/settings/display/ColorModePreferenceController.java @@ -18,7 +18,6 @@ import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.os.ServiceManager; -import android.support.v7.preference.Preference; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; @@ -45,11 +44,6 @@ public class ColorModePreferenceController extends BasePreferenceController { return mConfigWrapper.isScreenWideColorGamut() ? AVAILABLE : DISABLED_FOR_USER; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override public CharSequence getSummary() { final int colorMode = getColorDisplayController().getColorMode(); diff --git a/src/com/android/settings/gestures/GesturesSettingPreferenceController.java b/src/com/android/settings/gestures/GesturesSettingPreferenceController.java index 3a74a8cf09e..1df5b900b53 100644 --- a/src/com/android/settings/gestures/GesturesSettingPreferenceController.java +++ b/src/com/android/settings/gestures/GesturesSettingPreferenceController.java @@ -19,7 +19,6 @@ package com.android.settings.gestures; import android.content.ContentResolver; import android.content.Context; import android.provider.Settings; -import android.support.v7.preference.Preference; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.settings.R; @@ -55,11 +54,6 @@ public class GesturesSettingPreferenceController extends BasePreferenceControlle : DISABLED_UNSUPPORTED; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override public CharSequence getSummary() { if (!mFeatureProvider.isSensorAvailable(mContext)) { diff --git a/src/com/android/settings/notification/HeaderPreferenceController.java b/src/com/android/settings/notification/HeaderPreferenceController.java index 1247659545b..f30abf48ef0 100644 --- a/src/com/android/settings/notification/HeaderPreferenceController.java +++ b/src/com/android/settings/notification/HeaderPreferenceController.java @@ -51,6 +51,7 @@ public class HeaderPreferenceController extends NotificationPreferenceController return mAppRow != null; } + @Override public void updateState(Preference preference) { if (mAppRow != null && mFragment != null) { LayoutPreference pref = (LayoutPreference) preference; diff --git a/src/com/android/settings/print/PrintSettingPreferenceController.java b/src/com/android/settings/print/PrintSettingPreferenceController.java index 7fb67349f08..a589770a0ea 100644 --- a/src/com/android/settings/print/PrintSettingPreferenceController.java +++ b/src/com/android/settings/print/PrintSettingPreferenceController.java @@ -84,10 +84,7 @@ public class PrintSettingPreferenceController extends BasePreferenceController i @Override public void updateState(Preference preference) { - if (preference == null) { - return; - } - preference.setSummary(getSummary()); + super.updateState(preference); ((RestrictedPreference) preference).checkRestrictionAndSetDisabled( UserManager.DISALLOW_PRINTING); } diff --git a/src/com/android/settings/security/ScreenPinningPreferenceController.java b/src/com/android/settings/security/ScreenPinningPreferenceController.java index 36b25a385cf..a90746eb1e7 100644 --- a/src/com/android/settings/security/ScreenPinningPreferenceController.java +++ b/src/com/android/settings/security/ScreenPinningPreferenceController.java @@ -18,7 +18,6 @@ package com.android.settings.security; import android.content.Context; import android.provider.Settings; -import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; @@ -44,10 +43,4 @@ public class ScreenPinningPreferenceController extends BasePreferenceController ? mContext.getText(R.string.switch_on_text) : mContext.getText(R.string.switch_off_text); } - - @Override - public void updateState(Preference preference) { - super.updateState(preference); - preference.setSummary(getSummary()); - } } diff --git a/src/com/android/settings/system/SystemUpdatePreferenceController.java b/src/com/android/settings/system/SystemUpdatePreferenceController.java index 134166f36a4..80d4ecb05df 100644 --- a/src/com/android/settings/system/SystemUpdatePreferenceController.java +++ b/src/com/android/settings/system/SystemUpdatePreferenceController.java @@ -82,11 +82,6 @@ public class SystemUpdatePreferenceController extends BasePreferenceController { return false; } - @Override - public void updateState(Preference preference) { - preference.setSummary(getSummary()); - } - @Override public CharSequence getSummary() { final Bundle updateInfo = mUpdateManager.retrieveSystemUpdateInfo(); diff --git a/tests/robotests/assets/grandfather_not_in_search_index_provider_registry b/tests/robotests/assets/grandfather_not_in_search_index_provider_registry index 948b14ad70c..be3507c93ae 100644 --- a/tests/robotests/assets/grandfather_not_in_search_index_provider_registry +++ b/tests/robotests/assets/grandfather_not_in_search_index_provider_registry @@ -1 +1,2 @@ com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard +com.android.settings.search.indexing.FakeSettingsFragment diff --git a/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider b/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider index da541e21df2..b3290725c98 100644 --- a/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider +++ b/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider @@ -1,5 +1 @@ -com.android.settings.datausage.DataUsageSummaryLegacy com.android.settings.fuelgauge.PowerUsageSummary -com.android.settings.fuelgauge.PowerUsageAdvanced -com.android.settings.search.indexing.FakeSettingsFragment -com.android.settings.system.SystemDashboardFragment \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/accessibility/NotificationVibrationIntensityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/NotificationVibrationIntensityPreferenceControllerTest.java index 2f55e00d46e..32e17b92687 100644 --- a/tests/robotests/src/com/android/settings/accessibility/NotificationVibrationIntensityPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/NotificationVibrationIntensityPreferenceControllerTest.java @@ -86,25 +86,25 @@ public class NotificationVibrationIntensityPreferenceControllerTest { public void updateState_shouldRefreshSummary() { Settings.System.putInt(mContext.getContentResolver(), NOTIFICATION_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW); - mController.updateState(null); + mController.updateState(mPreference); assertThat(mPreference.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_vibration_intensity_low)); Settings.System.putInt(mContext.getContentResolver(), NOTIFICATION_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH); - mController.updateState(null); + mController.updateState(mPreference); assertThat(mPreference.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_vibration_intensity_high)); Settings.System.putInt(mContext.getContentResolver(), NOTIFICATION_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_MEDIUM); - mController.updateState(null); + mController.updateState(mPreference); assertThat(mPreference.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_vibration_intensity_medium)); Settings.System.putInt(mContext.getContentResolver(), NOTIFICATION_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF); - mController.updateState(null); + mController.updateState(mPreference); assertThat(mPreference.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_vibration_intensity_off)); } diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java index 80083ed1919..83579b4252c 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentSearchIndexProviderInspector.java @@ -19,6 +19,8 @@ package com.android.settings.dashboard; import android.app.Fragment; import android.content.Context; +import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.PreferenceControllerListHelper; import com.android.settings.search.DatabaseIndexingUtils; import com.android.settings.search.Indexable; import com.android.settingslib.core.AbstractPreferenceController; @@ -58,6 +60,14 @@ public class DashboardFragmentSearchIndexProviderInspector { try { controllersFromFragment = ((DashboardFragment) fragment).createPreferenceControllers(context); + List controllersFromXml = PreferenceControllerListHelper + .getPreferenceControllersFromXml(context, + ((DashboardFragment) fragment).getPreferenceScreenResId()); + final List uniqueControllerFromXml = + PreferenceControllerListHelper.filterControllers( + controllersFromXml, controllersFromFragment); + controllersFromFragment.addAll(uniqueControllerFromXml); + } catch (Throwable e) { // Can't do much with exception, assume the test passed. return true;