Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f37c746 authored by Liahav Eitan's avatar Liahav Eitan
Browse files

Fix Settings profile selector on HSUM

Currently Settings ProfileSelectorFragment uses isSystem() to identify
the personal user. This change migrates it to use isMain() in line with
HSUM architecture.

Test: atest SettingsRoboTests:com.android.settings.dashboard.profileselector.ProfileSelectFragmentTest
Fixes: 327610266, 327600527, 327585940, 326574736
Change-Id: I064b2fb295b89cffcd556e151fe1bf4484caf384
parent bfaa3398
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -232,7 +232,12 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
            if (extraTab != -1) {
                return ((ViewPagerAdapter) mViewPager.getAdapter()).getTabForPosition(extraTab);
            }
            final int userId = bundle.getInt(EXTRA_USER_ID, UserHandle.SYSTEM.getIdentifier());
            final UserManager userManager = getSystemService(UserManager.class);
            UserHandle mainUser = userManager.getMainUser();
            if (mainUser == null) {
                mainUser = UserHandle.SYSTEM;
            }
            final int userId = bundle.getInt(EXTRA_USER_ID, mainUser.getIdentifier());
            final boolean isWorkProfile = UserManager.get(activity).isManagedProfile(userId);
            if (isWorkProfile) {
                return WORK_TAB;
@@ -320,7 +325,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
            List<UserInfo> userInfos = userManager.getProfiles(UserHandle.myUserId());

            for (UserInfo userInfo : userInfos) {
                if (userInfo.getUserHandle().isSystem()) {
                if (userInfo.isMain()) {
                    fragments.add(createAndGetFragment(
                            ProfileType.PERSONAL,
                            bundle != null ? bundle : new Bundle(),
@@ -338,7 +343,7 @@ public abstract class ProfileSelectFragment extends DashboardFragment {
                                privateFragmentConstructor));
                    }
                } else {
                    Log.d(TAG, "Not showing tab for unsupported user");
                    Log.d(TAG, "Not showing tab for unsupported user " + userInfo);
                }
            }

+7 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.dashboard.profileselector;

import static android.content.Intent.EXTRA_USER_ID;
import static android.content.pm.UserInfo.FLAG_MAIN;
import static android.os.UserManager.USER_TYPE_FULL_SYSTEM;
import static android.os.UserManager.USER_TYPE_PROFILE_MANAGED;
import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE;
@@ -202,7 +203,7 @@ public class ProfileSelectFragmentTest {
    public void testGetFragments_whenOnlyPersonal_returnsOneFragment() {
        mSetFlagsRule.disableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE);
        mUserManager.addProfile(
                new UserInfo(0, PRIMARY_USER_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PRIMARY_USER_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        Fragment[] fragments = ProfileSelectFragment.getFragments(
                mContext,
                null /* bundle */,
@@ -215,7 +216,7 @@ public class ProfileSelectFragmentTest {
    @Test
    public void testGetFragments_whenPrivateDisabled_returnsOneFragment() {
        mUserManager.addProfile(
                new UserInfo(0, PRIMARY_USER_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PRIMARY_USER_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        mUserManager.addProfile(
                new UserInfo(11, PRIVATE_USER_NAME, null, 0, USER_TYPE_PROFILE_PRIVATE));
        Fragment[] fragments = ProfileSelectFragment.getFragments(
@@ -237,7 +238,7 @@ public class ProfileSelectFragmentTest {
    public void testGetFragments_whenPrivateEnabled_returnsTwoFragments() {
        mSetFlagsRule.enableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE);
        mUserManager.addProfile(
                new UserInfo(0, PRIMARY_USER_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PRIMARY_USER_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        mUserManager.addProfile(
                new UserInfo(11, PRIVATE_USER_NAME, null, 0, USER_TYPE_PROFILE_PRIVATE));
        Fragment[] fragments = ProfileSelectFragment.getFragments(
@@ -259,7 +260,7 @@ public class ProfileSelectFragmentTest {
    public void testGetFragments_whenManagedProfile_returnsTwoFragments() {
        mSetFlagsRule.disableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE);
        mUserManager.addProfile(
                new UserInfo(0, PRIMARY_USER_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PRIMARY_USER_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        mUserManager.addProfile(
                new UserInfo(10, MANAGED_USER_NAME, null, 0, USER_TYPE_PROFILE_MANAGED));
        Fragment[] fragments = ProfileSelectFragment.getFragments(
@@ -281,7 +282,7 @@ public class ProfileSelectFragmentTest {
    public void testGetFragments_whenAllProfiles_returnsThreeFragments() {
        mSetFlagsRule.enableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE);
        mUserManager.addProfile(
                new UserInfo(0, PRIMARY_USER_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PRIMARY_USER_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        mUserManager.addProfile(
                new UserInfo(10, MANAGED_USER_NAME, null, 0, USER_TYPE_PROFILE_MANAGED));
        mUserManager.addProfile(
@@ -305,7 +306,7 @@ public class ProfileSelectFragmentTest {
    public void testGetFragments_whenAvailableBundle_returnsFragmentsWithCorrectBundles() {
        mSetFlagsRule.enableFlags(Flags.FLAG_ALLOW_PRIVATE_PROFILE);
        mUserManager.addProfile(
                new UserInfo(0, PRIMARY_USER_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PRIMARY_USER_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        mUserManager.addProfile(
                new UserInfo(10, MANAGED_USER_NAME, null, 0, USER_TYPE_PROFILE_MANAGED));
        mUserManager.addProfile(
+2 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.dashboard.profileselector;

import static android.content.pm.UserInfo.FLAG_MAIN;
import static android.os.UserManager.USER_TYPE_FULL_SYSTEM;
import static android.os.UserManager.USER_TYPE_PROFILE_MANAGED;
import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE;
@@ -60,7 +61,7 @@ public class ProfileSelectLocationFragmentTest {
    public void setUp() {
        mUserManager = ShadowUserManager.getShadow();
        mUserManager.addProfile(
                new UserInfo(0, PERSONAL_PROFILE_NAME, null, 0, USER_TYPE_FULL_SYSTEM));
                new UserInfo(0, PERSONAL_PROFILE_NAME, null, FLAG_MAIN, USER_TYPE_FULL_SYSTEM));
        mUserManager.addProfile(
                new UserInfo(1, WORK_PROFILE_NAME, null, 0, USER_TYPE_PROFILE_MANAGED));
        mUserManager.addProfile(