Update top level menu items summary text.

- Use static summary for most items
- Move summary for user setting to user&account setting

Bug: 34975053
Test: RunSettingsRoboTests
Change-Id: I9bf87267778dc5933f97f5d3b9ae0f4f0b8da1a8
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 178d225..fb92647 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3030,6 +3030,8 @@
                        android:value="com.android.settings.category.ia.homepage"/>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                        android:value="com.android.settings.network.NetworkDashboardFragment"/>
+            <meta-data android:name="com.android.settings.summary"
+                       android:value="@string/network_dashboard_summary"/>
         </activity>
 
         <activity-alias android:name="DataUsageDashboardAlias"
@@ -3053,6 +3055,8 @@
                        android:value="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"/>
             <meta-data android:name="com.android.settings.category"
                        android:value="com.android.settings.category.ia.homepage"/>
+            <meta-data android:name="com.android.settings.summary"
+                       android:value="@string/connected_devices_dashboard_summary"/>
         </activity>
 
         <activity android:name=".Settings$AppAndNotificationDashboardActivity"
@@ -3065,6 +3069,8 @@
                        android:value="com.android.settings.applications.AppAndNotificationDashboardFragment"/>
             <meta-data android:name="com.android.settings.category"
                        android:value="com.android.settings.category.ia.homepage"/>
+            <meta-data android:name="com.android.settings.summary"
+                       android:value="@string/app_and_notification_dashboard_summary"/>
         </activity>
 
         <activity-alias android:name="BatteryDashboardAlias"
@@ -3089,6 +3095,8 @@
                        android:value="com.android.settings.DisplaySettings" />
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                        android:value="true" />
+            <meta-data android:name="com.android.settings.summary"
+                       android:value="@string/display_dashboard_summary"/>
         </activity-alias>
 
         <activity-alias android:name="SoundDashboardAlias"
@@ -3102,6 +3110,8 @@
                        android:value="com.android.settings.notification.SoundSettings" />
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                        android:value="true" />
+            <meta-data android:name="com.android.settings.summary"
+                       android:value="@string/sound_dashboard_summary"/>
         </activity-alias>
 
         <activity android:name=".Settings$StorageDashboardActivity"
@@ -3167,6 +3177,8 @@
                        android:value="com.android.settings.accessibility.AccessibilitySettings" />
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                        android:value="true" />
+            <meta-data android:name="com.android.settings.summary"
+                       android:resource="@string/accessibility_settings_summary" />
         </activity-alias>
 
         <activity android:name=".Settings$SystemDashboardActivity"
@@ -3179,6 +3191,8 @@
                        android:value="com.android.settings.category.ia.homepage"/>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                        android:value="com.android.settings.system.SystemDashboardFragment"/>
+            <meta-data android:name="com.android.settings.summary"
+                       android:value="@string/system_dashboard_summary"/>
         </activity>
 
         <activity android:name=".Settings$SupportDashboardActivity"
@@ -3192,7 +3206,7 @@
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                        android:value="com.android.settings.dashboard.SupportFragment"/>
             <meta-data android:name="com.android.settings.summary"
-                       android:resource="@string/help_label"/>
+                       android:resource="@string/support_summary"/>
         </activity>
 
         <!-- Alias for IME & Language in new IA. Should merge into TargetActivity when launch -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6cb164a..d4a1786 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -743,7 +743,8 @@
     <!-- Main Settings screen setting option title for the item to take you to the accounts screen [CHAR LIMIT=22] -->
     <string name="account_settings_title">Accounts</string>
     <!-- Main Settings screen setting option title for the item to take you to the security screen -->
-    <string name="security_settings_title">Security &amp; lockscreen</string>
+    <string name="security_settings_title">Security &amp; screen lock</string>
+
     <!-- Main Settings screen setting option summary text for the item tot ake you to the security and location screen -->
     <string name="security_settings_summary">Set My Location, screen unlock, SIM card lock, credential storage lock</string>
     <!-- Main Settings screen setting option summary text for the item to take you to the CDMA security and location screen -->
@@ -754,7 +755,8 @@
     <string name="disabled_by_administrator_summary">Disabled by administrator</string>
     <!-- In the security screen, the header title for security statuses -->
     <string name="security_status_title">Security status</string>
-
+    <!-- Summary for Security settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="security_dashboard_summary">Location, fingerprint</string>
     <!-- Fingerprint enrollment and settings --><skip />
     <!-- Title shown for menu item that launches fingerprint settings or enrollment [CHAR LIMIT=22] -->
     <string name="security_settings_fingerprint_preference_title">Fingerprint</string>
@@ -3960,6 +3962,8 @@
     <string name="accessibility_settings">Accessibility</string>
     <!-- Settings title for accessibility settings screen -->
     <string name="accessibility_settings_title">Accessibility settings</string>
+    <!-- Summary for Accessibility settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="accessibility_settings_summary">Screen readers, audio, display, interaction controls</string>
     <!-- Settings title for a brief version of Vision-Related Accessibility Settings. Displayed in Setup Wizard only. [CHAR LIMIT=35] -->
     <string name="vision_settings_title">Vision Settings</string>
     <!-- Settings description for a brief version of Vision-Related Accessibility Settings. Tells the user that they can adjust these settings now to help them through the remainder of the Setup Wizard and that they can later be changed in Settings. Displayed in Setup Wizard only. [CHAR LIMIT=none] -->
@@ -5698,6 +5702,9 @@
     <!-- Help menu label [CHAR LIMIT=20] -->
     <string name="help_label">Help &amp; feedback</string>
 
+    <!-- Summary text for support setting tile [CHAR LIMIT=None] -->
+    <string name="support_summary">Help articles, phone &amp; chat support</string>
+
     <!-- Help URI, Default [DO NOT TRANSLATE] -->
     <string name="help_uri_default" translatable="false"></string>
     <!-- Help URI, Android beam [DO NOT TRANSLATE] -->
@@ -5956,17 +5963,23 @@
 
     <!-- Title for setting tile leading to network and Internet settings [CHAR LIMIT=40]-->
     <string name="network_dashboard_title">Network &amp; internet</string>
+    <!-- Summary for Network and Internet settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="network_dashboard_summary">Wi-Fi, cellular, data usage, hotspot</string>
     <!-- Title for setting tile leading to Connected devices settings [CHAR LIMIT=40]-->
     <string name="connected_devices_dashboard_title">Connected devices</string>
+    <!-- Summary for Connected devices settings, explaning a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="connected_devices_dashboard_summary">Bluetooth, NFC, cast</string>
     <!-- Title for setting tile leading to Apps & Notification settings [CHAR LIMIT=40]-->
     <string name="app_and_notification_dashboard_title">Apps &amp; notifications</string>
+    <!-- Summary for Apps & Notification settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="app_and_notification_dashboard_summary">Permissions, default apps</string>
     <!-- Title for setting tile leading to User and accounts settings [CHAR LIMIT=40]-->
     <string name="account_dashboard_title">User &amp; accounts</string>
     <!-- Title for setting tile leading to setting UI which allows user set default app to
     handle actions such as open web page, making phone calls, default SMS apps [CHAR  LIMIT=40]-->
     <string name="app_default_dashboard_title">Default apps</string>
-    <!-- Summary text for system preference tile, showing current display language of device [CHAR LIMIT=NONE]-->
-    <string name="system_dashboard_summary">Language: <xliff:g id="language">%1$s</xliff:g></string>
+    <!-- Summary text for system preference tile, showing important setting items under system setting [CHAR LIMIT=NONE]-->
+    <string name="system_dashboard_summary">Languages, backup, updates, about phone</string>
 
     <!-- Search strings -->
     <!-- Text to describe the search results fragment title [CHAR LIMIT=16] -->
@@ -6060,6 +6073,9 @@
     [CHAR LIMIT=100] -->
     <string name="sound_settings_summary">Ring volume at <xliff:g id="percentage" example="2%">%1$s</xliff:g></string>
 
+    <!-- Summary for sound settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="sound_dashboard_summary">Volume, vibration, Do not disturb</string>
+
     <!-- Sound: Dashboard summary indicating the volume of ringtone when at 0% with vibrate enabled. [CHAR LIMIT=100] -->
     <string name="sound_settings_summary_vibrate">Ringer set to vibrate</string>
 
@@ -7403,6 +7419,8 @@
 
     <!-- Summary of display with screen sleep timeout [CHAR LIMIT=NONE] -->
     <string name="display_summary">Sleep after <xliff:g id="timeout_description" example="10 minutes">%1$s</xliff:g> of inactivity</string>
+    <!-- Summary for Display settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+    <string name="display_dashboard_summary">Wallpaper, sleep, font size</string>
     <!-- Example summary of display used in Setup Wizard preview screen [CHAR LIMIT=NONE] -->
     <string name="display_summary_example">Sleep after 10 minutes of inactivity</string>
 
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index d9cd047..aa17499 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -16,15 +16,12 @@
 
 package com.android.settings;
 
-import android.app.Activity;
 import android.content.Context;
 import android.provider.SearchIndexableResource;
-import android.provider.Settings;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.display.AutoBrightnessPreferenceController;
 import com.android.settings.display.AutoRotatePreferenceController;
 import com.android.settings.display.CameraGesturePreferenceController;
@@ -42,13 +39,10 @@
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settingslib.drawer.CategoryKey;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
-
 public class DisplaySettings extends DashboardFragment {
     private static final String TAG = "DisplaySettings";
 
@@ -102,46 +96,6 @@
         return R.string.help_uri_display;
     }
 
-    private static class SummaryProvider implements SummaryLoader.SummaryProvider {
-        private final Context mContext;
-        private final SummaryLoader mLoader;
-
-        private SummaryProvider(Context context, SummaryLoader loader) {
-            mContext = context;
-            mLoader = loader;
-        }
-
-        @Override
-        public void setListening(boolean listening) {
-            if (listening) {
-                updateSummary();
-            }
-        }
-
-        private void updateSummary() {
-            final long currentTimeout = Settings.System.getLong(mContext.getContentResolver(),
-                    SCREEN_OFF_TIMEOUT, TimeoutPreferenceController.FALLBACK_SCREEN_TIMEOUT_VALUE);
-            final CharSequence[] entries =
-                    mContext.getResources().getTextArray(R.array.screen_timeout_entries);
-            final CharSequence[] values =
-                    mContext.getResources().getTextArray(R.array.screen_timeout_values);
-            final CharSequence timeoutDescription = TimeoutPreferenceController
-                    .getTimeoutDescription(currentTimeout, entries, values);
-            final String summary = timeoutDescription == null ? ""
-                    : mContext.getString(R.string.display_summary, timeoutDescription);
-            mLoader.setSummary(this, summary);
-        }
-    }
-
-    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
-            = new SummaryLoader.SummaryProviderFactory() {
-        @Override
-        public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
-                SummaryLoader summaryLoader) {
-            return new SummaryProvider(activity, summaryLoader);
-        }
-    };
-
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
                 @Override
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 4dc545b..f274114 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -1300,7 +1300,8 @@
                         dashboardFeatureProvider.getTilesForCategory(CategoryKey.CATEGORY_SECURITY);
                 mSummaryLoader.setSummary(this, getPackageVerifierSummary(dashboardCategory));
             } else {
-                mSummaryLoader.setSummary(this, null);
+                mSummaryLoader.setSummary(this,
+                        mContext.getString(R.string.security_dashboard_summary));
             }
         }
 
diff --git a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
index dbc0292..66fd85a 100644
--- a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
@@ -15,14 +15,19 @@
  */
 package com.android.settings.accounts;
 
+import android.app.Activity;
 import android.content.Context;
+import android.content.pm.UserInfo;
 import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.drawer.Tile;
@@ -81,6 +86,36 @@
         return true;
     }
 
+    private static class SummaryProvider implements SummaryLoader.SummaryProvider {
+
+        private final Context mContext;
+        private final SummaryLoader mSummaryLoader;
+
+        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
+            mContext = context;
+            mSummaryLoader = summaryLoader;
+        }
+
+        @Override
+        public void setListening(boolean listening) {
+            if (listening) {
+                UserInfo info = mContext.getSystemService(UserManager.class).getUserInfo(
+                        UserHandle.myUserId());
+                mSummaryLoader.setSummary(this, mContext.getString(R.string.user_summary,
+                        info.name));
+            }
+        }
+    }
+
+    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
+            = new SummaryLoader.SummaryProviderFactory() {
+        @Override
+        public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
+                SummaryLoader summaryLoader) {
+            return new SummaryProvider(activity, summaryLoader);
+        }
+    };
+
     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
                 @Override
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index 1cf0ae6..c1a2159 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -16,14 +16,8 @@
 
 package com.android.settings.notification;
 
-import android.app.Activity;
-import android.app.NotificationManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
-import android.media.AudioManager;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -39,11 +33,9 @@
 import com.android.settings.core.PreferenceController;
 import com.android.settings.core.lifecycle.Lifecycle;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 
-import java.text.NumberFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -109,7 +101,7 @@
     @Override
     protected int getPreferenceScreenResId() {
         return mDashboardFeatureProvider.isEnabled()
-            ? R.xml.ia_sound_settings : R.xml.sound_settings;
+                ? R.xml.ia_sound_settings : R.xml.sound_settings;
     }
 
     @Override
@@ -127,7 +119,7 @@
         controllers.add(new AlarmVolumePreferenceController(context, mVolumeCallback, lifecycle));
         controllers.add(new MediaVolumePreferenceController(context, mVolumeCallback, lifecycle));
         controllers.add(
-            new NotificationVolumePreferenceController(context, mVolumeCallback, lifecycle));
+                new NotificationVolumePreferenceController(context, mVolumeCallback, lifecycle));
         controllers.add(new RingVolumePreferenceController(context, mVolumeCallback, lifecycle));
 
         // === Phone & notification ringtone ===
@@ -198,7 +190,9 @@
                 mCurrent.stopSample();
             }
         }
-    };
+    }
+
+    ;
 
     // === Callbacks ===
 
@@ -220,130 +214,63 @@
         }
     }
 
-    // === Summary ===
-
-    private static class SummaryProvider extends BroadcastReceiver
-            implements SummaryLoader.SummaryProvider {
-
-        private final Context mContext;
-        private final AudioManager mAudioManager;
-        private final SummaryLoader mSummaryLoader;
-        private final int maxVolume;
-
-        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
-            mContext = context;
-            mSummaryLoader = summaryLoader;
-            mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
-            maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
-        }
-
-        @Override
-        public void setListening(boolean listening) {
-            if (listening) {
-                IntentFilter filter = new IntentFilter();
-                filter.addAction(AudioManager.VOLUME_CHANGED_ACTION);
-                filter.addAction(AudioManager.STREAM_DEVICES_CHANGED_ACTION);
-                filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
-                filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION);
-                filter.addAction(AudioManager.STREAM_MUTE_CHANGED_ACTION);
-                filter.addAction(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED);
-                mContext.registerReceiver(this, filter);
-            } else {
-                mContext.unregisterReceiver(this);
-            }
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final int ringerMode = mAudioManager.getRingerMode();
-            int resId;
-            String percent = "";
-            if (ringerMode == mAudioManager.RINGER_MODE_SILENT) {
-                resId = R.string.sound_settings_summary_silent;
-            } else if (ringerMode == mAudioManager.RINGER_MODE_VIBRATE){
-                resId = R.string.sound_settings_summary_vibrate;
-            }
-            else {
-                percent =  NumberFormat.getPercentInstance().format(
-                        (double) mAudioManager.getStreamVolume(
-                                AudioManager.STREAM_RING) / maxVolume);
-                resId = R.string.sound_settings_summary;
-            }
-
-            final ComponentName suppressor = NotificationManager.from(mContext)
-                    .getEffectsSuppressor();
-            if (suppressor != null) {
-                String suppressText = SuppressorHelper.getSuppressionText(mContext, suppressor);
-                mSummaryLoader.setSummary(this, suppressText);
-            } else {
-                mSummaryLoader.setSummary(this, mContext.getString(resId, percent));
-            }
-        }
-    }
-
-    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
-            = new SummaryLoader.SummaryProviderFactory() {
-        @Override
-        public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
-                SummaryLoader summaryLoader) {
-            return new SummaryProvider(activity, summaryLoader);
-        }
-    };
-
     // === Indexing ===
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
 
-        public List<SearchIndexableResource> getXmlResourcesToIndex(
-                Context context, boolean enabled) {
-            final SearchIndexableResource sir = new SearchIndexableResource(context);
-            sir.xmlResId = R.xml.sound_settings;
-            return Arrays.asList(sir);
-        }
+                public List<SearchIndexableResource> getXmlResourcesToIndex(
+                        Context context, boolean enabled) {
+                    final SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.sound_settings;
+                    return Arrays.asList(sir);
+                }
 
-        public List<String> getNonIndexableKeys(Context context) {
-            final ArrayList<String> rt = new ArrayList<String>();
-            new NotificationVolumePreferenceController(
-                context, null /* Callback */, null /* Lifecycle */).updateNonIndexableKeys(rt);
-            new RingVolumePreferenceController(
-                context, null /* Callback */, null /* Lifecycle */).updateNonIndexableKeys(rt);
-            new PhoneRingtonePreferenceController(context).updateNonIndexableKeys(rt);
-            new VibrateWhenRingPreferenceController(context).updateNonIndexableKeys(rt);
-            new EmergencyBroadcastPreferenceController(context).updateNonIndexableKeys(rt);
-            if (FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
-                .isEnabled()) {
-                new DialPadTonePreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new ScreenLockSoundPreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new ChargingSoundPreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new DockingSoundPreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new TouchSoundPreferenceController(context, null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new VibrateOnTouchPreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new DockAudioMediaPreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-                new BootSoundPreferenceController(context).updateNonIndexableKeys(rt);
-                new EmergencyTonePreferenceController(context,
-                    null /* SettingsPreferenceFragment */,
-                    null /* Lifecycle */).updateNonIndexableKeys(rt);
-            } else {
-                new CastPreferenceController(context).updateNonIndexableKeys(rt);
-            }
+                public List<String> getNonIndexableKeys(Context context) {
+                    final ArrayList<String> rt = new ArrayList<String>();
+                    new NotificationVolumePreferenceController(
+                            context, null /* Callback */,
+                            null /* Lifecycle */).updateNonIndexableKeys(rt);
+                    new RingVolumePreferenceController(
+                            context, null /* Callback */,
+                            null /* Lifecycle */).updateNonIndexableKeys(rt);
+                    new PhoneRingtonePreferenceController(context).updateNonIndexableKeys(rt);
+                    new VibrateWhenRingPreferenceController(context).updateNonIndexableKeys(rt);
+                    new EmergencyBroadcastPreferenceController(context).updateNonIndexableKeys(rt);
+                    if (FeatureFactory.getFactory(context).getDashboardFeatureProvider(context)
+                            .isEnabled()) {
+                        new DialPadTonePreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new ScreenLockSoundPreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new ChargingSoundPreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new DockingSoundPreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new TouchSoundPreferenceController(context, null /*
+                        SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new VibrateOnTouchPreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new DockAudioMediaPreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                        new BootSoundPreferenceController(context).updateNonIndexableKeys(rt);
+                        new EmergencyTonePreferenceController(context,
+                                null /* SettingsPreferenceFragment */,
+                                null /* Lifecycle */).updateNonIndexableKeys(rt);
+                    } else {
+                        new CastPreferenceController(context).updateNonIndexableKeys(rt);
+                    }
 
-            return rt;
-        }
-    };
+                    return rt;
+                }
+            };
 
     // === Work Sound Settings ===
 
diff --git a/src/com/android/settings/system/SystemDashboardFragment.java b/src/com/android/settings/system/SystemDashboardFragment.java
index c46bc6f..2898ce2 100644
--- a/src/com/android/settings/system/SystemDashboardFragment.java
+++ b/src/com/android/settings/system/SystemDashboardFragment.java
@@ -23,10 +23,8 @@
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController;
 import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
-import com.android.settings.localepicker.LocaleFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
@@ -64,34 +62,6 @@
     }
 
     /**
-     * For Summary
-     */
-    private static class SummaryProvider implements SummaryLoader.SummaryProvider {
-
-        private final Context mContext;
-        private final SummaryLoader mSummaryLoader;
-        private final LocaleFeatureProvider mLocaleFeatureProvider;
-
-        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
-            mContext = context;
-            mSummaryLoader = summaryLoader;
-            mLocaleFeatureProvider = FeatureFactory.getFactory(context).getLocaleFeatureProvider();
-        }
-
-        @Override
-        public void setListening(boolean listening) {
-            if (listening) {
-                final String language = mContext.getString(
-                        R.string.system_dashboard_summary, mLocaleFeatureProvider.getLocaleNames());
-                mSummaryLoader.setSummary(this, language);
-            }
-        }
-    }
-
-    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY =
-            (context, summaryLoader) -> new SummaryProvider(context, summaryLoader);
-
-    /**
      * For Search.
      */
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index a794953..c49aa1d 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -39,7 +39,6 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
@@ -66,7 +65,6 @@
 import com.android.settings.Utils;
 import com.android.settings.accounts.AddUserWhenLockedPreferenceController;
 import com.android.settings.accounts.EmergencyInfoPreferenceController;
-import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
@@ -1060,36 +1058,6 @@
         mMePreference.setTitle(label);
     }
 
-    private static class SummaryProvider implements SummaryLoader.SummaryProvider {
-
-        private final Context mContext;
-        private final SummaryLoader mSummaryLoader;
-
-        public SummaryProvider(Context context, SummaryLoader summaryLoader) {
-            mContext = context;
-            mSummaryLoader = summaryLoader;
-        }
-
-        @Override
-        public void setListening(boolean listening) {
-            if (listening) {
-                UserInfo info = mContext.getSystemService(UserManager.class).getUserInfo(
-                        UserHandle.myUserId());
-                mSummaryLoader.setSummary(this, mContext.getString(R.string.user_summary,
-                        info.name));
-            }
-        }
-    }
-
-    public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
-            = new SummaryLoader.SummaryProviderFactory() {
-        @Override
-        public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
-                                                                   SummaryLoader summaryLoader) {
-            return new SummaryProvider(activity, summaryLoader);
-        }
-    };
-
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
                 @Override
diff --git a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
deleted file mode 100644
index ac499eb..0000000
--- a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2016 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;
-
-import android.app.Activity;
-import android.provider.Settings.System;
-import com.android.settings.dashboard.SummaryLoader;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.annotation.Config;
-
-import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
-import static junit.framework.Assert.assertEquals;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class DisplaySettingsTest {
-
-  private Activity mActivity;
-  @Mock private SummaryLoader mSummaryLoader;
-  private SummaryLoader.SummaryProvider mSummaryProvider;
-
-  @Before
-  public void setUp() {
-    MockitoAnnotations.initMocks(this);
-    mActivity = Robolectric.buildActivity(Activity.class).get();
-    mSummaryProvider = DisplaySettings.SUMMARY_PROVIDER_FACTORY.createSummaryProvider(
-            mActivity, mSummaryLoader);
-  }
-
-  @Test
-  public void testInvalidTimeouts_summaryShouldBeEmpty() {
-    System.putLong(mActivity.getContentResolver(), SCREEN_OFF_TIMEOUT, -1);
-    assertEquals(System.getLong(mActivity.getContentResolver(), SCREEN_OFF_TIMEOUT, 0), -1);
-    mSummaryProvider.setListening(true);
-
-    System.putLong(mActivity.getContentResolver(), SCREEN_OFF_TIMEOUT, 1234);
-    mSummaryProvider.setListening(true);
-
-    verify(mSummaryLoader, times(2)).setSummary(mSummaryProvider, "");
-  }
-
-  @Test
-  public void testValidTimeouts_summaryShouldNotBeEmpty() {
-    final CharSequence[] values =
-            mActivity.getResources().getTextArray(R.array.screen_timeout_values);
-
-    for (CharSequence value : values) {
-      long timeout = Long.parseLong(value.toString());
-      System.putLong(mActivity.getContentResolver(), SCREEN_OFF_TIMEOUT, timeout);
-      assertEquals(System.getLong(mActivity.getContentResolver(), SCREEN_OFF_TIMEOUT, 0), timeout);
-      mSummaryProvider.setListening(true);
-    }
-
-    verify(mSummaryLoader, never()).setSummary(mSummaryProvider, "");
-  }
-}
diff --git a/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
index 90761a0..e1c2abf 100644
--- a/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/UserAndAccountDashboardFragmentTest.java
@@ -15,11 +15,16 @@
  */
 package com.android.settings.accounts;
 
+import android.app.Activity;
 import android.content.Context;
+import android.content.pm.UserInfo;
 import android.os.Bundle;
+import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 
+import com.android.settings.R;
 import com.android.settings.TestConfig;
+import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.Tile;
@@ -37,6 +42,9 @@
 import java.util.List;
 
 import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @RunWith(RobolectricTestRunner.class)
@@ -48,6 +56,8 @@
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
+    @Mock
+    private UserManager mUserManager;
     private UserAndAccountDashboardFragment mFragment;
 
     @Before
@@ -87,6 +97,24 @@
     }
 
     @Test
+    public void updateSummary_shouldDisplaySignedInUser() {
+        final Activity activity = mock(Activity.class);
+        final SummaryLoader loader = mock(SummaryLoader.class);
+        final UserInfo userInfo = new UserInfo();
+        userInfo.name = "test_name";
+
+        when(activity.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mUserManager.getUserInfo(anyInt())).thenReturn(userInfo);
+
+        final SummaryLoader.SummaryProvider provider = mFragment.SUMMARY_PROVIDER_FACTORY
+                .createSummaryProvider(activity, loader);
+        provider.setListening(true);
+
+        verify(activity).getString(R.string.user_summary,
+                userInfo.name);
+    }
+
+    @Test
     public void testSearchIndexProvider_shouldIndexResource() {
         final List<SearchIndexableResource> indexRes =
                 UserAndAccountDashboardFragment.SEARCH_INDEX_DATA_PROVIDER.getXmlResourcesToIndex(
diff --git a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
deleted file mode 100644
index 65a8805..0000000
--- a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2016 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.system;
-
-
-import android.app.Activity;
-import com.android.settings.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
-import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.google.common.truth.Truth;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
-
-import static com.android.settings.system.SystemDashboardFragment.SUMMARY_PROVIDER_FACTORY;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class SystemDashboardFragmentTest {
-
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private Activity mActivity;
-    @Mock
-    private SummaryLoader mSummaryLoader;
-
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        FakeFeatureFactory.setupForTest(mActivity);
-    }
-
-    @Test
-    public void hasSummaryProvider() {
-        Truth.assertThat(SUMMARY_PROVIDER_FACTORY).isNotNull();
-    }
-
-    @Test
-    public void updateSummary_isListening_shouldNotifySummaryLoader() {
-        final SummaryLoader.SummaryProvider summaryProvider =
-                SUMMARY_PROVIDER_FACTORY.createSummaryProvider(mActivity, mSummaryLoader);
-        summaryProvider.setListening(true);
-
-        verify(mSummaryLoader).setSummary(eq(summaryProvider), anyString());
-    }
-
-    @Test
-    public void updateSummary_notListening_shouldNotNotifySummaryLoader() {
-        final SummaryLoader.SummaryProvider summaryProvider =
-                SUMMARY_PROVIDER_FACTORY.createSummaryProvider(mActivity, mSummaryLoader);
-        summaryProvider.setListening(false);
-
-        verify(mSummaryLoader, never()).setSummary(eq(summaryProvider), anyString());
-    }
-}