Apply top intro preference in Settings app (1/n)
Based on content in footer, we need to convert some footers
to top info prefernce.
Test: Run robo test and see the screens
Bug: 173087905
Change-Id: Ie62a503481f9d385f5468896fba8f607cb3437d3
diff --git a/res/xml/dark_mode_settings.xml b/res/xml/dark_mode_settings.xml
index 0ebc044..e076b89 100644
--- a/res/xml/dark_mode_settings.xml
+++ b/res/xml/dark_mode_settings.xml
@@ -27,6 +27,11 @@
settings:allowDividerBelow="true"
settings:controller="com.android.settings.display.TwilightLocationPreferenceController"/>
+ <com.android.settingslib.widget.TopIntroPreference
+ android:key="dark_ui_top_intro"
+ android:title="@string/dark_ui_text"
+ settings:searchable="false"/>
+
<DropDownPreference
android:key="dark_ui_auto_mode"
android:title="@string/dark_ui_auto_mode_title"
@@ -55,11 +60,4 @@
settings:allowDividerBelow="true"
settings:controller="com.android.settings.display.darkmode.DarkModeActivationPreferenceController"/>
- <com.android.settingslib.widget.FooterPreference
- android:key="dark_ui_footer"
- android:title="@string/dark_ui_text"
- android:selectable="false"
- settings:searchable="false"
- settings:allowDividerAbove="true"/>
-
</PreferenceScreen>
diff --git a/res/xml/graphics_driver_settings.xml b/res/xml/graphics_driver_settings.xml
index a1fa78c..26c3193 100644
--- a/res/xml/graphics_driver_settings.xml
+++ b/res/xml/graphics_driver_settings.xml
@@ -20,12 +20,17 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/graphics_driver_dashboard_title">
+ <com.android.settingslib.widget.TopIntroPreference
+ android:key="top_info_graphics_driver"
+ android:title="@string/graphics_driver_footer_text"
+ settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverTopIntroPreferenceController"/>
+
<ListPreference
android:key="graphics_driver_all_apps_preference"
android:title="@string/graphics_driver_all_apps_preference_title"
android:dialogTitle="@string/graphics_driver_all_apps_preference_title"
- settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverEnableForAllAppsPreferenceController">
- </ListPreference>
+ settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverEnableForAllAppsPreferenceController"
+ settings:allowDividerAbove="true"/>
<PreferenceCategory
android:key="graphics_driver_category"
@@ -33,11 +38,4 @@
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverAppPreferenceController">
</PreferenceCategory>
- <com.android.settingslib.widget.FooterPreference
- android:key="graphics_driver_footer"
- android:title="@string/graphics_driver_footer_text"
- android:selectable="false"
- settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverFooterPreferenceController">
- </com.android.settingslib.widget.FooterPreference>
-
</PreferenceScreen>
diff --git a/res/xml/night_display_settings.xml b/res/xml/night_display_settings.xml
index 8b7e41a..9acccf6 100644
--- a/res/xml/night_display_settings.xml
+++ b/res/xml/night_display_settings.xml
@@ -27,10 +27,16 @@
settings:controller="com.android.settings.display.TwilightLocationPreferenceController"
settings:allowDividerBelow="true"/>
+ <com.android.settingslib.widget.TopIntroPreference
+ android:key="night_display_top_intro"
+ android:title="@string/night_display_text"
+ settings:controller="com.android.settings.display.NightDisplayTopIntroPreferenceController"/>
+
<DropDownPreference
android:key="night_display_auto_mode"
android:title="@string/night_display_auto_mode_title"
android:summary="%s"
+ settings:allowDividerAbove="true"
settings:controller="com.android.settings.display.NightDisplayAutoModePreferenceController"/>
<Preference
@@ -59,11 +65,4 @@
settings:keywords="@string/keywords_display_night_display"
settings:controller="com.android.settings.display.NightDisplayActivationPreferenceController"/>
- <com.android.settingslib.widget.FooterPreference
- android:key="night_display_footer"
- android:title="@string/night_display_text"
- android:selectable="false"
- settings:allowDividerAbove="true"
- settings:controller="com.android.settings.display.NightDisplayFooterPreferenceController"/>
-
</PreferenceScreen>
diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml
index 9367a9b..cca4e5f 100644
--- a/res/xml/tether_prefs.xml
+++ b/res/xml/tether_prefs.xml
@@ -19,12 +19,17 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/tether_settings_title_all">
+ <com.android.settingslib.widget.TopIntroPreference
+ android:key="tether_prefs_top_intro"
+ settings:searchable="false"/>
+
<com.android.settings.widget.FixedLineSummaryPreference
android:key="wifi_tether"
android:title="@string/wifi_hotspot_checkbox_text"
android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.wifi.tether.WifiTetherSettings"
- settings:summaryLineCount="2" />
+ settings:allowDividerAbove="true"
+ settings:summaryLineCount="2"/>
<SwitchPreference
android:key="usb_tether_settings"
@@ -49,9 +54,4 @@
android:summary="@string/tether_settings_disabled_on_data_saver"
android:selectable="false"
settings:allowDividerAbove="true" />
-
- <com.android.settingslib.widget.FooterPreference
- android:key="tether_prefs_footer"
- android:selectable="false"
- settings:searchable="false"/>
</PreferenceScreen>
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index 7726a18..5cafa1a 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -20,6 +20,11 @@
android:key="user_settings_screen"
android:title="@string/user_settings_title">
+ <com.android.settingslib.widget.TopIntroPreference
+ android:key="multiuser_top_intro"
+ android:title="@string/user_settings_footer_text"
+ settings:controller="com.android.settings.users.MultiUserTopIntroPreferenceController"/>
+
<PreferenceCategory
android:key="user_list"
android:title="@string/user_list_title"
@@ -45,11 +50,4 @@
android:order="105"
settings:allowDividerAbove="true"/>
- <com.android.settingslib.widget.FooterPreference
- android:key="multiuser_footer"
- android:title="@string/user_settings_footer_text"
- android:selectable="false"
- settings:searchable="false"
- settings:controller="com.android.settings.users.MultiUserFooterPreferenceController"/>
-
</PreferenceScreen>
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 74a0897..c33f7db 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -78,7 +78,7 @@
private static final String KEY_ENABLE_ETHERNET_TETHERING = "enable_ethernet_tethering";
private static final String KEY_DATA_SAVER_FOOTER = "disabled_on_data_saver";
@VisibleForTesting
- static final String KEY_TETHER_PREFS_FOOTER = "tether_prefs_footer";
+ static final String KEY_TETHER_PREFS_TOP_INTRO = "tether_prefs_top_intro";
private static final String TAG = "TetheringSettings";
@@ -155,7 +155,7 @@
}
setupTetherPreference();
- setFooterPreferenceTitle();
+ setTopIntroPreferenceTitle();
mDataSaverBackend.addListener(this);
@@ -231,14 +231,14 @@
}
@VisibleForTesting
- void setFooterPreferenceTitle() {
- final Preference footerPreference = findPreference(KEY_TETHER_PREFS_FOOTER);
+ void setTopIntroPreferenceTitle() {
+ final Preference topIntroPreference = findPreference(KEY_TETHER_PREFS_TOP_INTRO);
final WifiManager wifiManager =
(WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isStaApConcurrencySupported()) {
- footerPreference.setTitle(R.string.tethering_footer_info_sta_ap_concurrency);
+ topIntroPreference.setTitle(R.string.tethering_footer_info_sta_ap_concurrency);
} else {
- footerPreference.setTitle(R.string.tethering_footer_info);
+ topIntroPreference.setTitle(R.string.tethering_footer_info);
}
}
diff --git a/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java b/src/com/android/settings/development/graphicsdriver/GraphicsDriverTopIntroPreferenceController.java
similarity index 85%
rename from src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java
rename to src/com/android/settings/development/graphicsdriver/GraphicsDriverTopIntroPreferenceController.java
index 5595f39..3d449d9 100644
--- a/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceController.java
+++ b/src/com/android/settings/development/graphicsdriver/GraphicsDriverTopIntroPreferenceController.java
@@ -33,12 +33,12 @@
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
-import com.android.settingslib.widget.FooterPreference;
+import com.android.settingslib.widget.TopIntroPreference;
/**
- * Controller of footer preference for Graphics Driver Preferences dashboard.
+ * Controller of top info preference for Graphics Driver Preferences dashboard.
*/
-public class GraphicsDriverFooterPreferenceController extends BasePreferenceController
+public class GraphicsDriverTopIntroPreferenceController extends BasePreferenceController
implements GraphicsDriverContentObserver.OnGraphicsDriverContentChangedListener,
LifecycleObserver, OnStart, OnStop {
@@ -46,9 +46,9 @@
@VisibleForTesting
GraphicsDriverContentObserver mGraphicsDriverContentObserver;
- private FooterPreference mPreference;
+ private TopIntroPreference mPreference;
- public GraphicsDriverFooterPreferenceController(Context context, String key) {
+ public GraphicsDriverTopIntroPreferenceController(Context context, String key) {
super(context, key);
mContentResolver = context.getContentResolver();
mGraphicsDriverContentObserver =
@@ -83,8 +83,8 @@
@Override
public void updateState(Preference preference) {
- final FooterPreference footerPref = (FooterPreference) preference;
- footerPref.setVisible(isAvailable());
+ final TopIntroPreference topIntroPref = (TopIntroPreference) preference;
+ topIntroPref.setVisible(isAvailable());
}
@Override
diff --git a/src/com/android/settings/display/NightDisplayFooterPreferenceController.java b/src/com/android/settings/display/NightDisplayTopIntroPreferenceController.java
similarity index 78%
rename from src/com/android/settings/display/NightDisplayFooterPreferenceController.java
rename to src/com/android/settings/display/NightDisplayTopIntroPreferenceController.java
index 14fe25e..a40044b 100644
--- a/src/com/android/settings/display/NightDisplayFooterPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayTopIntroPreferenceController.java
@@ -21,9 +21,13 @@
import com.android.settings.core.BasePreferenceController;
-public class NightDisplayFooterPreferenceController extends BasePreferenceController {
+/**
+ * NightDisplayTopIntroPreferenceController can control the visibility of night display top info
+ * preference.
+ */
+public class NightDisplayTopIntroPreferenceController extends BasePreferenceController {
- public NightDisplayFooterPreferenceController(Context context, String key) {
+ public NightDisplayTopIntroPreferenceController(Context context, String key) {
super(context, key);
}
diff --git a/src/com/android/settings/users/MultiUserFooterPreferenceController.java b/src/com/android/settings/users/MultiUserTopIntroPreferenceController.java
similarity index 83%
rename from src/com/android/settings/users/MultiUserFooterPreferenceController.java
rename to src/com/android/settings/users/MultiUserTopIntroPreferenceController.java
index 03ed6ce..a8076c2 100644
--- a/src/com/android/settings/users/MultiUserFooterPreferenceController.java
+++ b/src/com/android/settings/users/MultiUserTopIntroPreferenceController.java
@@ -23,12 +23,16 @@
import com.android.settings.core.BasePreferenceController;
-public class MultiUserFooterPreferenceController extends BasePreferenceController {
+/**
+ * MultiUserTopIntroPreferenceController can control the visibility of multi user top info
+ * preference.
+ */
+public class MultiUserTopIntroPreferenceController extends BasePreferenceController {
@VisibleForTesting
final UserCapabilities mUserCaps;
- public MultiUserFooterPreferenceController(Context context, String key) {
+ public MultiUserTopIntroPreferenceController(Context context, String key) {
super(context, key);
mUserCaps = UserCapabilities.create(context);
}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index d92418d..63ccb6b 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -110,7 +110,7 @@
private static final String KEY_ADD_GUEST = "guest_add";
private static final String KEY_ADD_USER = "user_add";
private static final String KEY_ADD_USER_WHEN_LOCKED = "user_settings_add_users_when_locked";
- private static final String KEY_MULTIUSER_FOOTER = "multiuser_footer";
+ private static final String KEY_MULTIUSER_TOP_INTRO = "multiuser_top_intro";
private static final int MENU_REMOVE_USER = Menu.FIRST;
@@ -169,7 +169,7 @@
private EditUserInfoController mEditUserInfoController =
new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
- private MultiUserFooterPreferenceController mMultiUserFooterPreferenceController;
+ private MultiUserTopIntroPreferenceController mMultiUserTopIntroPreferenceController;
private UserCreatingDialog mUserCreatingDialog;
private CharSequence mPendingUserName;
@@ -240,12 +240,12 @@
mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
activity, KEY_ADD_USER_WHEN_LOCKED);
- mMultiUserFooterPreferenceController = new MultiUserFooterPreferenceController(activity,
- KEY_MULTIUSER_FOOTER);
+ mMultiUserTopIntroPreferenceController = new MultiUserTopIntroPreferenceController(activity,
+ KEY_MULTIUSER_TOP_INTRO);
final PreferenceScreen screen = getPreferenceScreen();
mAddUserWhenLockedPreferenceController.displayPreference(screen);
- mMultiUserFooterPreferenceController.displayPreference(screen);
+ mMultiUserTopIntroPreferenceController.displayPreference(screen);
screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey())
.setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController);
@@ -936,14 +936,14 @@
// Remove everything from mUserListCategory and add new users.
mUserListCategory.removeAll();
- // If multi-user is disabled, just show footer and return.
+ // If multi-user is disabled, just show top info and return.
final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
mAddUserWhenLockedPreferenceController.getPreferenceKey());
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
- final Preference multiUserFooterPrefence = getPreferenceScreen().findPreference(
- mMultiUserFooterPreferenceController.getPreferenceKey());
- mMultiUserFooterPreferenceController.updateState(multiUserFooterPrefence);
+ final Preference multiUserTopIntroPrefence = getPreferenceScreen().findPreference(
+ mMultiUserTopIntroPreferenceController.getPreferenceKey());
+ mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPrefence);
mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
updateAddGuest(context, users.stream().anyMatch(UserInfo::isGuest));
diff --git a/tests/robotests/src/com/android/settings/TetherSettingsTest.java b/tests/robotests/src/com/android/settings/TetherSettingsTest.java
index be14eda..f217e21 100644
--- a/tests/robotests/src/com/android/settings/TetherSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/TetherSettingsTest.java
@@ -158,13 +158,13 @@
final TetherSettings spyTetherSettings = spy(new TetherSettings());
when(spyTetherSettings.getContext()).thenReturn(mContext);
final Preference mockPreference = mock(Preference.class);
- when(spyTetherSettings.findPreference(TetherSettings.KEY_TETHER_PREFS_FOOTER))
+ when(spyTetherSettings.findPreference(TetherSettings.KEY_TETHER_PREFS_TOP_INTRO))
.thenReturn(mockPreference);
final WifiManager mockWifiManager = mock(WifiManager.class);
when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mockWifiManager);
when(mockWifiManager.isStaApConcurrencySupported()).thenReturn(true);
- spyTetherSettings.setFooterPreferenceTitle();
+ spyTetherSettings.setTopIntroPreferenceTitle();
verify(mockPreference, never()).setTitle(R.string.tethering_footer_info);
verify(mockPreference).setTitle(R.string.tethering_footer_info_sta_ap_concurrency);
diff --git a/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverTopIntroPreferenceControllerTest.java
similarity index 92%
rename from tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverTopIntroPreferenceControllerTest.java
index 1e4c496..28e5c5a 100644
--- a/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverFooterPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/graphicsdriver/GraphicsDriverTopIntroPreferenceControllerTest.java
@@ -34,7 +34,7 @@
import androidx.preference.PreferenceScreen;
-import com.android.settingslib.widget.FooterPreference;
+import com.android.settingslib.widget.TopIntroPreference;
import org.junit.Before;
import org.junit.Test;
@@ -45,25 +45,25 @@
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
-public class GraphicsDriverFooterPreferenceControllerTest {
+public class GraphicsDriverTopIntroPreferenceControllerTest {
@Mock
private PreferenceScreen mScreen;
@Mock
- private FooterPreference mPreference;
+ private TopIntroPreference mPreference;
@Mock
private GraphicsDriverContentObserver mGraphicsDriverContentObserver;
private Context mContext;
private ContentResolver mResolver;
- private GraphicsDriverFooterPreferenceController mController;
+ private GraphicsDriverTopIntroPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mResolver = mContext.getContentResolver();
- mController = spy(new GraphicsDriverFooterPreferenceController(mContext, "key"));
+ mController = spy(new GraphicsDriverTopIntroPreferenceController(mContext, "key"));
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
}
diff --git a/tests/robotests/src/com/android/settings/display/NightDisplayFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/NightDisplayTopIntroPreferenceControllerTest.java
similarity index 74%
rename from tests/robotests/src/com/android/settings/display/NightDisplayFooterPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/display/NightDisplayTopIntroPreferenceControllerTest.java
index efb26fa..10f7f0b 100644
--- a/tests/robotests/src/com/android/settings/display/NightDisplayFooterPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/NightDisplayTopIntroPreferenceControllerTest.java
@@ -1,15 +1,17 @@
/*
* 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
+ * 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.
+ * 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.display;
@@ -31,14 +33,14 @@
@RunWith(RobolectricTestRunner.class)
@Config(shadows = SettingsShadowResources.class)
-public class NightDisplayFooterPreferenceControllerTest {
+public class NightDisplayTopIntroPreferenceControllerTest {
- private NightDisplayFooterPreferenceController mController;
+ private NightDisplayTopIntroPreferenceController mController;
@Before
public void setUp() {
mController =
- new NightDisplayFooterPreferenceController(RuntimeEnvironment.application, "key");
+ new NightDisplayTopIntroPreferenceController(RuntimeEnvironment.application, "key");
}
@After
diff --git a/tests/robotests/src/com/android/settings/users/MultiUserFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
similarity index 89%
rename from tests/robotests/src/com/android/settings/users/MultiUserFooterPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
index 69825b4..bc0b060 100644
--- a/tests/robotests/src/com/android/settings/users/MultiUserFooterPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/MultiUserTopIntroPreferenceControllerTest.java
@@ -32,15 +32,15 @@
@RunWith(RobolectricTestRunner.class)
@Ignore
-public class MultiUserFooterPreferenceControllerTest {
+public class MultiUserTopIntroPreferenceControllerTest {
private Context mContext;
- private MultiUserFooterPreferenceController mController;
+ private MultiUserTopIntroPreferenceController mController;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
- mController = new MultiUserFooterPreferenceController(mContext, "footer");
+ mController = new MultiUserTopIntroPreferenceController(mContext, "top_info");
}
@Test
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index ec2fdc6..3494c63 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -128,8 +128,8 @@
mFragment = spy(new UserSettings());
ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController",
mock(AddUserWhenLockedPreferenceController.class));
- ReflectionHelpers.setField(mFragment, "mMultiUserFooterPreferenceController",
- mock(MultiUserFooterPreferenceController.class));
+ ReflectionHelpers.setField(mFragment, "mMultiUserTopIntroPreferenceController",
+ mock(MultiUserTopIntroPreferenceController.class));
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);