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
This commit is contained in:
Tsung-Mao Fang
2020-11-16 18:13:36 +08:00
parent 564eaec283
commit 00956fb4e1
15 changed files with 86 additions and 83 deletions

View File

@@ -27,6 +27,11 @@
settings:allowDividerBelow="true" settings:allowDividerBelow="true"
settings:controller="com.android.settings.display.TwilightLocationPreferenceController"/> 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 <DropDownPreference
android:key="dark_ui_auto_mode" android:key="dark_ui_auto_mode"
android:title="@string/dark_ui_auto_mode_title" android:title="@string/dark_ui_auto_mode_title"
@@ -55,11 +60,4 @@
settings:allowDividerBelow="true" settings:allowDividerBelow="true"
settings:controller="com.android.settings.display.darkmode.DarkModeActivationPreferenceController"/> 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> </PreferenceScreen>

View File

@@ -20,12 +20,17 @@
xmlns:settings="http://schemas.android.com/apk/res-auto" xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/graphics_driver_dashboard_title"> 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 <ListPreference
android:key="graphics_driver_all_apps_preference" android:key="graphics_driver_all_apps_preference"
android:title="@string/graphics_driver_all_apps_preference_title" android:title="@string/graphics_driver_all_apps_preference_title"
android:dialogTitle="@string/graphics_driver_all_apps_preference_title" android:dialogTitle="@string/graphics_driver_all_apps_preference_title"
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverEnableForAllAppsPreferenceController"> settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverEnableForAllAppsPreferenceController"
</ListPreference> settings:allowDividerAbove="true"/>
<PreferenceCategory <PreferenceCategory
android:key="graphics_driver_category" android:key="graphics_driver_category"
@@ -33,11 +38,4 @@
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverAppPreferenceController"> settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverAppPreferenceController">
</PreferenceCategory> </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> </PreferenceScreen>

View File

@@ -27,10 +27,16 @@
settings:controller="com.android.settings.display.TwilightLocationPreferenceController" settings:controller="com.android.settings.display.TwilightLocationPreferenceController"
settings:allowDividerBelow="true"/> 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 <DropDownPreference
android:key="night_display_auto_mode" android:key="night_display_auto_mode"
android:title="@string/night_display_auto_mode_title" android:title="@string/night_display_auto_mode_title"
android:summary="%s" android:summary="%s"
settings:allowDividerAbove="true"
settings:controller="com.android.settings.display.NightDisplayAutoModePreferenceController"/> settings:controller="com.android.settings.display.NightDisplayAutoModePreferenceController"/>
<Preference <Preference
@@ -59,11 +65,4 @@
settings:keywords="@string/keywords_display_night_display" settings:keywords="@string/keywords_display_night_display"
settings:controller="com.android.settings.display.NightDisplayActivationPreferenceController"/> 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> </PreferenceScreen>

View File

@@ -19,12 +19,17 @@
xmlns:settings="http://schemas.android.com/apk/res-auto" xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/tether_settings_title_all"> 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 <com.android.settings.widget.FixedLineSummaryPreference
android:key="wifi_tether" android:key="wifi_tether"
android:title="@string/wifi_hotspot_checkbox_text" android:title="@string/wifi_hotspot_checkbox_text"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.wifi.tether.WifiTetherSettings" android:fragment="com.android.settings.wifi.tether.WifiTetherSettings"
settings:summaryLineCount="2" /> settings:allowDividerAbove="true"
settings:summaryLineCount="2"/>
<SwitchPreference <SwitchPreference
android:key="usb_tether_settings" android:key="usb_tether_settings"
@@ -49,9 +54,4 @@
android:summary="@string/tether_settings_disabled_on_data_saver" android:summary="@string/tether_settings_disabled_on_data_saver"
android:selectable="false" android:selectable="false"
settings:allowDividerAbove="true" /> settings:allowDividerAbove="true" />
<com.android.settingslib.widget.FooterPreference
android:key="tether_prefs_footer"
android:selectable="false"
settings:searchable="false"/>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -20,6 +20,11 @@
android:key="user_settings_screen" android:key="user_settings_screen"
android:title="@string/user_settings_title"> 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 <PreferenceCategory
android:key="user_list" android:key="user_list"
android:title="@string/user_list_title" android:title="@string/user_list_title"
@@ -45,11 +50,4 @@
android:order="105" android:order="105"
settings:allowDividerAbove="true"/> 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> </PreferenceScreen>

View File

@@ -78,7 +78,7 @@ public class TetherSettings extends RestrictedSettingsFragment
private static final String KEY_ENABLE_ETHERNET_TETHERING = "enable_ethernet_tethering"; private static final String KEY_ENABLE_ETHERNET_TETHERING = "enable_ethernet_tethering";
private static final String KEY_DATA_SAVER_FOOTER = "disabled_on_data_saver"; private static final String KEY_DATA_SAVER_FOOTER = "disabled_on_data_saver";
@VisibleForTesting @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"; private static final String TAG = "TetheringSettings";
@@ -155,7 +155,7 @@ public class TetherSettings extends RestrictedSettingsFragment
} }
setupTetherPreference(); setupTetherPreference();
setFooterPreferenceTitle(); setTopIntroPreferenceTitle();
mDataSaverBackend.addListener(this); mDataSaverBackend.addListener(this);
@@ -231,14 +231,14 @@ public class TetherSettings extends RestrictedSettingsFragment
} }
@VisibleForTesting @VisibleForTesting
void setFooterPreferenceTitle() { void setTopIntroPreferenceTitle() {
final Preference footerPreference = findPreference(KEY_TETHER_PREFS_FOOTER); final Preference topIntroPreference = findPreference(KEY_TETHER_PREFS_TOP_INTRO);
final WifiManager wifiManager = final WifiManager wifiManager =
(WifiManager) getContext().getSystemService(Context.WIFI_SERVICE); (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isStaApConcurrencySupported()) { if (wifiManager.isStaApConcurrencySupported()) {
footerPreference.setTitle(R.string.tethering_footer_info_sta_ap_concurrency); topIntroPreference.setTitle(R.string.tethering_footer_info_sta_ap_concurrency);
} else { } else {
footerPreference.setTitle(R.string.tethering_footer_info); topIntroPreference.setTitle(R.string.tethering_footer_info);
} }
} }

View File

@@ -33,12 +33,12 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; 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, implements GraphicsDriverContentObserver.OnGraphicsDriverContentChangedListener,
LifecycleObserver, OnStart, OnStop { LifecycleObserver, OnStart, OnStop {
@@ -46,9 +46,9 @@ public class GraphicsDriverFooterPreferenceController extends BasePreferenceCont
@VisibleForTesting @VisibleForTesting
GraphicsDriverContentObserver mGraphicsDriverContentObserver; GraphicsDriverContentObserver mGraphicsDriverContentObserver;
private FooterPreference mPreference; private TopIntroPreference mPreference;
public GraphicsDriverFooterPreferenceController(Context context, String key) { public GraphicsDriverTopIntroPreferenceController(Context context, String key) {
super(context, key); super(context, key);
mContentResolver = context.getContentResolver(); mContentResolver = context.getContentResolver();
mGraphicsDriverContentObserver = mGraphicsDriverContentObserver =
@@ -83,8 +83,8 @@ public class GraphicsDriverFooterPreferenceController extends BasePreferenceCont
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
final FooterPreference footerPref = (FooterPreference) preference; final TopIntroPreference topIntroPref = (TopIntroPreference) preference;
footerPref.setVisible(isAvailable()); topIntroPref.setVisible(isAvailable());
} }
@Override @Override

View File

@@ -21,9 +21,13 @@ import android.hardware.display.ColorDisplayManager;
import com.android.settings.core.BasePreferenceController; 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); super(context, key);
} }

View File

@@ -23,12 +23,16 @@ import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController; 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 @VisibleForTesting
final UserCapabilities mUserCaps; final UserCapabilities mUserCaps;
public MultiUserFooterPreferenceController(Context context, String key) { public MultiUserTopIntroPreferenceController(Context context, String key) {
super(context, key); super(context, key);
mUserCaps = UserCapabilities.create(context); mUserCaps = UserCapabilities.create(context);
} }

View File

@@ -110,7 +110,7 @@ public class UserSettings extends SettingsPreferenceFragment
private static final String KEY_ADD_GUEST = "guest_add"; 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 = "user_add";
private static final String KEY_ADD_USER_WHEN_LOCKED = "user_settings_add_users_when_locked"; 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; private static final int MENU_REMOVE_USER = Menu.FIRST;
@@ -169,7 +169,7 @@ public class UserSettings extends SettingsPreferenceFragment
private EditUserInfoController mEditUserInfoController = private EditUserInfoController mEditUserInfoController =
new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY); new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController; private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
private MultiUserFooterPreferenceController mMultiUserFooterPreferenceController; private MultiUserTopIntroPreferenceController mMultiUserTopIntroPreferenceController;
private UserCreatingDialog mUserCreatingDialog; private UserCreatingDialog mUserCreatingDialog;
private CharSequence mPendingUserName; private CharSequence mPendingUserName;
@@ -240,12 +240,12 @@ public class UserSettings extends SettingsPreferenceFragment
mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController( mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
activity, KEY_ADD_USER_WHEN_LOCKED); activity, KEY_ADD_USER_WHEN_LOCKED);
mMultiUserFooterPreferenceController = new MultiUserFooterPreferenceController(activity, mMultiUserTopIntroPreferenceController = new MultiUserTopIntroPreferenceController(activity,
KEY_MULTIUSER_FOOTER); KEY_MULTIUSER_TOP_INTRO);
final PreferenceScreen screen = getPreferenceScreen(); final PreferenceScreen screen = getPreferenceScreen();
mAddUserWhenLockedPreferenceController.displayPreference(screen); mAddUserWhenLockedPreferenceController.displayPreference(screen);
mMultiUserFooterPreferenceController.displayPreference(screen); mMultiUserTopIntroPreferenceController.displayPreference(screen);
screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey()) screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey())
.setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController); .setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController);
@@ -936,14 +936,14 @@ public class UserSettings extends SettingsPreferenceFragment
// Remove everything from mUserListCategory and add new users. // Remove everything from mUserListCategory and add new users.
mUserListCategory.removeAll(); 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( final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
mAddUserWhenLockedPreferenceController.getPreferenceKey()); mAddUserWhenLockedPreferenceController.getPreferenceKey());
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen); mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
final Preference multiUserFooterPrefence = getPreferenceScreen().findPreference( final Preference multiUserTopIntroPrefence = getPreferenceScreen().findPreference(
mMultiUserFooterPreferenceController.getPreferenceKey()); mMultiUserTopIntroPreferenceController.getPreferenceKey());
mMultiUserFooterPreferenceController.updateState(multiUserFooterPrefence); mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPrefence);
mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled); mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
updateAddGuest(context, users.stream().anyMatch(UserInfo::isGuest)); updateAddGuest(context, users.stream().anyMatch(UserInfo::isGuest));

View File

@@ -158,13 +158,13 @@ public class TetherSettingsTest {
final TetherSettings spyTetherSettings = spy(new TetherSettings()); final TetherSettings spyTetherSettings = spy(new TetherSettings());
when(spyTetherSettings.getContext()).thenReturn(mContext); when(spyTetherSettings.getContext()).thenReturn(mContext);
final Preference mockPreference = mock(Preference.class); 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); .thenReturn(mockPreference);
final WifiManager mockWifiManager = mock(WifiManager.class); final WifiManager mockWifiManager = mock(WifiManager.class);
when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mockWifiManager); when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mockWifiManager);
when(mockWifiManager.isStaApConcurrencySupported()).thenReturn(true); when(mockWifiManager.isStaApConcurrencySupported()).thenReturn(true);
spyTetherSettings.setFooterPreferenceTitle(); spyTetherSettings.setTopIntroPreferenceTitle();
verify(mockPreference, never()).setTitle(R.string.tethering_footer_info); verify(mockPreference, never()).setTitle(R.string.tethering_footer_info);
verify(mockPreference).setTitle(R.string.tethering_footer_info_sta_ap_concurrency); verify(mockPreference).setTitle(R.string.tethering_footer_info_sta_ap_concurrency);

View File

@@ -34,7 +34,7 @@ import android.provider.Settings;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.TopIntroPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -45,25 +45,25 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class GraphicsDriverFooterPreferenceControllerTest { public class GraphicsDriverTopIntroPreferenceControllerTest {
@Mock @Mock
private PreferenceScreen mScreen; private PreferenceScreen mScreen;
@Mock @Mock
private FooterPreference mPreference; private TopIntroPreference mPreference;
@Mock @Mock
private GraphicsDriverContentObserver mGraphicsDriverContentObserver; private GraphicsDriverContentObserver mGraphicsDriverContentObserver;
private Context mContext; private Context mContext;
private ContentResolver mResolver; private ContentResolver mResolver;
private GraphicsDriverFooterPreferenceController mController; private GraphicsDriverTopIntroPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mResolver = mContext.getContentResolver(); mResolver = mContext.getContentResolver();
mController = spy(new GraphicsDriverFooterPreferenceController(mContext, "key")); mController = spy(new GraphicsDriverTopIntroPreferenceController(mContext, "key"));
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
} }

View File

@@ -1,15 +1,17 @@
/* /*
* Copyright (C) 2018 The Android Open Source Project * Copyright (C) 2018 The Android Open Source Project
* *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * Licensed under the Apache License, Version 2.0 (the "License");
* except in compliance with the License. You may obtain a copy of the License at * 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 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software distributed under the * Unless required by applicable law or agreed to in writing, software
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * distributed under the License is distributed on an "AS IS" BASIS,
* KIND, either express or implied. See the License for the specific language governing * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* permissions and limitations under the License. * See the License for the specific language governing permissions and
* limitations under the License.
*/ */
package com.android.settings.display; package com.android.settings.display;
@@ -31,14 +33,14 @@ import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = SettingsShadowResources.class) @Config(shadows = SettingsShadowResources.class)
public class NightDisplayFooterPreferenceControllerTest { public class NightDisplayTopIntroPreferenceControllerTest {
private NightDisplayFooterPreferenceController mController; private NightDisplayTopIntroPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() {
mController = mController =
new NightDisplayFooterPreferenceController(RuntimeEnvironment.application, "key"); new NightDisplayTopIntroPreferenceController(RuntimeEnvironment.application, "key");
} }
@After @After

View File

@@ -32,15 +32,15 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Ignore @Ignore
public class MultiUserFooterPreferenceControllerTest { public class MultiUserTopIntroPreferenceControllerTest {
private Context mContext; private Context mContext;
private MultiUserFooterPreferenceController mController; private MultiUserTopIntroPreferenceController mController;
@Before @Before
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new MultiUserFooterPreferenceController(mContext, "footer"); mController = new MultiUserTopIntroPreferenceController(mContext, "top_info");
} }
@Test @Test

View File

@@ -128,8 +128,8 @@ public class UserSettingsTest {
mFragment = spy(new UserSettings()); mFragment = spy(new UserSettings());
ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController", ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController",
mock(AddUserWhenLockedPreferenceController.class)); mock(AddUserWhenLockedPreferenceController.class));
ReflectionHelpers.setField(mFragment, "mMultiUserFooterPreferenceController", ReflectionHelpers.setField(mFragment, "mMultiUserTopIntroPreferenceController",
mock(MultiUserFooterPreferenceController.class)); mock(MultiUserTopIntroPreferenceController.class));
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager); ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities); ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable); ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);