Use FooterPreference in xml explicitly

Removed the FooterPreferenceMixin from the UserSettings page.

Fixes: 140008560
Test: manual test
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.users
Change-Id: If6da2bd2f6a72d8e61b8c8bca9e3179cfdee05e6
This commit is contained in:
Sunny Shao
2019-08-26 16:00:20 +08:00
parent 2cce2150c6
commit 7687e0b17d
4 changed files with 18 additions and 20 deletions

View File

@@ -40,4 +40,11 @@
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

@@ -21,29 +21,18 @@ import android.content.Context;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
public class MultiUserFooterPreferenceController extends BasePreferenceController { public class MultiUserFooterPreferenceController extends BasePreferenceController {
@VisibleForTesting @VisibleForTesting
final UserCapabilities mUserCaps; final UserCapabilities mUserCaps;
private FooterPreferenceMixinCompat mFooterMixin; public MultiUserFooterPreferenceController(Context context, String key) {
super(context, key);
public MultiUserFooterPreferenceController(Context context) {
super(context, "dummy_key");
mUserCaps = UserCapabilities.create(context); mUserCaps = UserCapabilities.create(context);
} }
public MultiUserFooterPreferenceController setFooterMixin(
FooterPreferenceMixinCompat footerMixin) {
mFooterMixin = footerMixin;
return this;
}
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return (mUserCaps.mEnabled && !mUserCaps.mUserSwitcherEnabled) return (mUserCaps.mEnabled && !mUserCaps.mUserSwitcherEnabled)
@@ -54,8 +43,6 @@ public class MultiUserFooterPreferenceController extends BasePreferenceControlle
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
mUserCaps.updateAddUserCapabilities(mContext); mUserCaps.updateAddUserCapabilities(mContext);
final FooterPreference pref = mFooterMixin.createFooterPreference(); preference.setVisible(isAvailable());
pref.setTitle(R.string.user_settings_footer_text);
pref.setVisible(isAvailable());
} }
} }

View File

@@ -111,6 +111,7 @@ public class UserSettings extends SettingsPreferenceFragment
private static final String KEY_USER_GUEST = "user_guest"; private static final String KEY_USER_GUEST = "user_guest";
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 int MENU_REMOVE_USER = Menu.FIRST; private static final int MENU_REMOVE_USER = Menu.FIRST;
@@ -233,8 +234,8 @@ 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) mMultiUserFooterPreferenceController = new MultiUserFooterPreferenceController(activity,
.setFooterMixin(mFooterPreferenceMixin); KEY_MULTIUSER_FOOTER);
final PreferenceScreen screen = getPreferenceScreen(); final PreferenceScreen screen = getPreferenceScreen();
mAddUserWhenLockedPreferenceController.displayPreference(screen); mAddUserWhenLockedPreferenceController.displayPreference(screen);
@@ -958,7 +959,10 @@ public class UserSettings extends SettingsPreferenceFragment
final Preference addUserOnLockScreen = getPreferenceScreen().findPreference( final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
mAddUserWhenLockedPreferenceController.getPreferenceKey()); mAddUserWhenLockedPreferenceController.getPreferenceKey());
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen); mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
mMultiUserFooterPreferenceController.updateState(null /* preference */);
final Preference multiUserFooterPrefence = getPreferenceScreen().findPreference(
mMultiUserFooterPreferenceController.getPreferenceKey());
mMultiUserFooterPreferenceController.updateState(multiUserFooterPrefence);
mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled); mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
updateAddUser(context); updateAddUser(context);

View File

@@ -40,7 +40,7 @@ public class MultiUserFooterPreferenceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new MultiUserFooterPreferenceController(mContext); mController = new MultiUserFooterPreferenceController(mContext, "footer");
} }
@Test @Test