Merge changes Ic908918a,Iefa3ec84

* changes:
  Polish and humanize the title for the entry of Text and Reading Options in SuW.
  Polish and humanize the title for Text and Reading Options.
diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
index 5fc4cd2..2cdbb33 100644
--- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java
@@ -234,6 +234,9 @@
         final String htmlDescription = info.loadHtmlDescription(getActivity().getPackageManager());
         extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription);
 
+        final CharSequence intro = info.loadIntro(getActivity().getPackageManager());
+        extras.putCharSequence(AccessibilitySettings.EXTRA_INTRO, intro);
+
         // We will log nonA11yTool status from PolicyWarningUIController; others none.
         extras.putLong(AccessibilitySettings.EXTRA_TIME_FOR_LOGGING,
                 getActivity().getIntent().getLongExtra(
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index e834640..6539f32 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -94,6 +94,7 @@
     static final String EXTRA_TITLE_RES = "title_res";
     static final String EXTRA_RESOLVE_INFO = "resolve_info";
     static final String EXTRA_SUMMARY = "summary";
+    static final String EXTRA_INTRO = "intro";
     static final String EXTRA_SETTINGS_TITLE = "settings_title";
     static final String EXTRA_COMPONENT_NAME = "component_name";
     static final String EXTRA_SETTINGS_COMPONENT_NAME = "settings_component_name";
@@ -570,14 +571,15 @@
 
                 final String prefKey = preference.getKey();
                 final int imageRes = info.getAnimatedImageRes();
+                final CharSequence intro = info.loadIntro(mPm);
                 final CharSequence description = getServiceDescription(mContext, info,
                         serviceEnabled);
                 final String htmlDescription = info.loadHtmlDescription(mPm);
                 final String settingsClassName = info.getSettingsActivityName();
                 final String tileServiceClassName = info.getTileServiceClassName();
 
-                putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription,
-                        componentName);
+                putBasicExtras(preference, prefKey, title, intro, description, imageRes,
+                        htmlDescription, componentName);
                 putServiceExtras(preference, resolveInfo, serviceEnabled);
                 putSettingsExtras(preference, packageName, settingsClassName);
                 putTileServiceExtras(preference, packageName, tileServiceClassName);
@@ -630,14 +632,15 @@
                 setRestrictedPreferenceEnabled(preference, permittedServices, serviceEnabled);
 
                 final String prefKey = preference.getKey();
+                final CharSequence intro = info.loadIntro(mPm);
                 final String description = info.loadDescription(mPm);
                 final int imageRes = info.getAnimatedImageRes();
                 final String htmlDescription = info.loadHtmlDescription(mPm);
                 final String settingsClassName = info.getSettingsActivityName();
                 final String tileServiceClassName = info.getTileServiceClassName();
 
-                putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription,
-                        componentName);
+                putBasicExtras(preference, prefKey, title, intro, description, imageRes,
+                        htmlDescription, componentName);
                 putSettingsExtras(preference, componentName.getPackageName(), settingsClassName);
                 putTileServiceExtras(preference, componentName.getPackageName(),
                         tileServiceClassName);
@@ -722,11 +725,12 @@
 
         /** Puts the basic extras into {@link RestrictedPreference}'s getExtras(). */
         private void putBasicExtras(RestrictedPreference preference, String prefKey,
-                CharSequence title, CharSequence summary, int imageRes, String htmlDescription,
-                ComponentName componentName) {
+                CharSequence title, CharSequence intro, CharSequence summary, int imageRes,
+                String htmlDescription, ComponentName componentName) {
             final Bundle extras = preference.getExtras();
             extras.putString(EXTRA_PREFERENCE_KEY, prefKey);
             extras.putCharSequence(EXTRA_TITLE, title);
+            extras.putCharSequence(EXTRA_INTRO, intro);
             extras.putCharSequence(EXTRA_SUMMARY, summary);
             extras.putParcelable(EXTRA_COMPONENT_NAME, componentName);
             extras.putInt(EXTRA_ANIMATED_IMAGE_RES, imageRes);
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 08e9b88..5747d0a 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -63,6 +63,7 @@
 import com.android.settingslib.accessibility.AccessibilityUtils;
 import com.android.settingslib.widget.IllustrationPreference;
 import com.android.settingslib.widget.OnMainSwitchChangeListener;
+import com.android.settingslib.widget.TopIntroPreference;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
@@ -92,8 +93,10 @@
     protected Uri mImageUri;
     private CharSequence mDescription;
     protected CharSequence mHtmlDescription;
+    protected CharSequence mTopIntroTitle;
 
     private static final String DRAWABLE_FOLDER = "drawable";
+    protected static final String KEY_TOP_INTRO_PREFERENCE = "top_intro";
     protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service";
     public static final String KEY_GENERAL_CATEGORY = "general_categories";
     protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description";
@@ -182,6 +185,7 @@
         // Need to be called as early as possible. Protected variables will be assigned here.
         onProcessArguments(getArguments());
 
+        initTopIntroPreference();
         initAnimatedImagePreference();
         initToggleServiceSwitchPreference();
         initGeneralCategory();
@@ -388,11 +392,17 @@
             mHtmlDescription = arguments.getCharSequence(
                     AccessibilitySettings.EXTRA_HTML_DESCRIPTION);
         }
+
+        // Intro.
+        if (arguments.containsKey(AccessibilitySettings.EXTRA_INTRO)) {
+            mTopIntroTitle = arguments.getCharSequence(AccessibilitySettings.EXTRA_INTRO);
+        }
     }
 
     /** Customizes the order by preference key. */
     protected List<String> getPreferenceOrderList() {
         final List<String> lists = new ArrayList<>();
+        lists.add(KEY_TOP_INTRO_PREFERENCE);
         lists.add(KEY_ANIMATED_IMAGE);
         lists.add(KEY_USE_SERVICE_PREFERENCE);
         lists.add(KEY_GENERAL_CATEGORY);
@@ -461,6 +471,17 @@
         getPreferenceScreen().addPreference(illustrationPreference);
     }
 
+    @VisibleForTesting
+    void initTopIntroPreference() {
+        if (TextUtils.isEmpty(mTopIntroTitle)) {
+            return;
+        }
+        final TopIntroPreference topIntroPreference = new TopIntroPreference(getPrefContext());
+        topIntroPreference.setKey(KEY_TOP_INTRO_PREFERENCE);
+        topIntroPreference.setTitle(mTopIntroTitle);
+        getPreferenceScreen().addPreference(topIntroPreference);
+    }
+
     private void initToggleServiceSwitchPreference() {
         mToggleServiceSwitchPreference = new SettingsMainSwitchPreference(getPrefContext());
         mToggleServiceSwitchPreference.setKey(KEY_USE_SERVICE_PREFERENCE);
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
index 5ea4edc..34a2f5b 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
@@ -51,6 +51,7 @@
 import com.android.settings.accessibility.AccessibilityDialogUtils.DialogType;
 import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
 import com.android.settings.testutils.shadow.ShadowFragment;
+import com.android.settingslib.widget.TopIntroPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -81,6 +82,7 @@
     private static final String PLACEHOLDER_DIALOG_TITLE = "title";
     private static final String DEFAULT_SUMMARY = "default summary";
     private static final String DEFAULT_DESCRIPTION = "default description";
+    private static final String DEFAULT_TOP_INTRO = "default top intro";
 
     private static final String SOFTWARE_SHORTCUT_KEY =
             Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS;
@@ -294,6 +296,23 @@
     }
 
     @Test
+    public void initTopIntroPreference_hasTopIntroTitle_shouldSetAsExpectedValue() {
+        mFragment.mTopIntroTitle = DEFAULT_TOP_INTRO;
+        mFragment.initTopIntroPreference();
+
+        TopIntroPreference topIntroPreference =
+                (TopIntroPreference) mFragment.getPreferenceScreen().getPreference(/* index= */ 0);
+        assertThat(topIntroPreference.getTitle().toString()).isEqualTo(DEFAULT_TOP_INTRO);
+    }
+
+    @Test
+    public void initTopIntroPreference_topIntroTitleIsNull_shouldNotAdded() {
+        mFragment.initTopIntroPreference();
+
+        assertThat(mFragment.getPreferenceScreen().getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
     public void createFooterPreference_shouldSetAsExpectedValue() {
         mFragment.createFooterPreference(mFragment.getPreferenceScreen(),
                 DEFAULT_SUMMARY, DEFAULT_DESCRIPTION);