Loading services/core/java/com/android/server/pm/UserManagerService.java +6 −6 Original line number Diff line number Diff line Loading @@ -5137,12 +5137,6 @@ public class UserManagerService extends IUserManager.Stub { mPm.createNewUser(userId, userTypeInstallablePackages, disallowedPackages); t.traceEnd(); userInfo.partial = false; synchronized (mPackagesLock) { writeUserLP(userData); } updateUserIds(); Bundle restrictions = new Bundle(); if (isGuest) { // Guest default restrictions can be modified via setDefaultGuestRestrictions. Loading @@ -5160,6 +5154,12 @@ public class UserManagerService extends IUserManager.Stub { mBaseUserRestrictions.updateRestrictions(userId, restrictions); } userInfo.partial = false; synchronized (mPackagesLock) { writeUserLP(userData); } updateUserIds(); t.traceBegin("PM.onNewUserCreated-" + userId); mPm.onNewUserCreated(userId, /* convertedFromPreCreated= */ false); t.traceEnd(); Loading services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java +55 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; Loading @@ -47,10 +48,12 @@ import android.provider.Settings; import android.util.Log; import android.util.Pair; import android.util.SparseArray; import android.util.Xml; import androidx.test.annotation.UiThreadTest; import com.android.internal.widget.LockSettingsInternal; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.testing.ExtendedMockitoRule; import com.android.server.LocalServices; import com.android.server.am.UserState; Loading @@ -62,8 +65,12 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.mockito.Mock; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /** * Run as {@code atest FrameworksMockingServicesTests:com.android.server.pm.UserManagerServiceTest} Loading Loading @@ -96,6 +103,12 @@ public final class UserManagerServiceTest { */ private static final int PROFILE_USER_ID = 643; private static final String USER_INFO_DIR = "system" + File.separator + "users"; private static final String XML_SUFFIX = ".xml"; private static final String TAG_RESTRICTIONS = "restrictions"; @Rule public final ExtendedMockitoRule mExtendedMockitoRule = new ExtendedMockitoRule.Builder(this) .spyStatic(UserManager.class) Loading Loading @@ -530,6 +543,48 @@ public final class UserManagerServiceTest { assertThat(user1.name.length()).isEqualTo(4); } @Test public void testDefaultRestrictionsArePersistedAfterCreateUser() throws IOException, XmlPullParserException { UserInfo user = mUms.createUserWithThrow("Test", USER_TYPE_FULL_SECONDARY, 0); assertTrue(hasRestrictionsInUserXMLFile(user.id)); } /** * Returns true if the user's XML file has Default restrictions * @param userId Id of the user. */ private boolean hasRestrictionsInUserXMLFile(int userId) throws IOException, XmlPullParserException { FileInputStream is = new FileInputStream(getUserXmlFile(userId)); final TypedXmlPullParser parser = Xml.resolvePullParser(is); int type; while ((type = parser.next()) != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT) { // Skip } if (type != XmlPullParser.START_TAG) { return false; } int outerDepth = parser.getDepth(); while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { if (TAG_RESTRICTIONS.equals(parser.getName())) { return true; } } return false; } private File getUserXmlFile(int userId) { File file = new File(mTestDir, USER_INFO_DIR); return new File(file, userId + XML_SUFFIX); } private String generateLongString() { String partialString = "Test Name Test Name Test Name Test Name Test Name Test Name Test " + "Name Test Name Test Name Test Name "; //String of length 100 Loading Loading
services/core/java/com/android/server/pm/UserManagerService.java +6 −6 Original line number Diff line number Diff line Loading @@ -5137,12 +5137,6 @@ public class UserManagerService extends IUserManager.Stub { mPm.createNewUser(userId, userTypeInstallablePackages, disallowedPackages); t.traceEnd(); userInfo.partial = false; synchronized (mPackagesLock) { writeUserLP(userData); } updateUserIds(); Bundle restrictions = new Bundle(); if (isGuest) { // Guest default restrictions can be modified via setDefaultGuestRestrictions. Loading @@ -5160,6 +5154,12 @@ public class UserManagerService extends IUserManager.Stub { mBaseUserRestrictions.updateRestrictions(userId, restrictions); } userInfo.partial = false; synchronized (mPackagesLock) { writeUserLP(userData); } updateUserIds(); t.traceBegin("PM.onNewUserCreated-" + userId); mPm.onNewUserCreated(userId, /* convertedFromPreCreated= */ false); t.traceEnd(); Loading
services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java +55 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; Loading @@ -47,10 +48,12 @@ import android.provider.Settings; import android.util.Log; import android.util.Pair; import android.util.SparseArray; import android.util.Xml; import androidx.test.annotation.UiThreadTest; import com.android.internal.widget.LockSettingsInternal; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.testing.ExtendedMockitoRule; import com.android.server.LocalServices; import com.android.server.am.UserState; Loading @@ -62,8 +65,12 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.mockito.Mock; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /** * Run as {@code atest FrameworksMockingServicesTests:com.android.server.pm.UserManagerServiceTest} Loading Loading @@ -96,6 +103,12 @@ public final class UserManagerServiceTest { */ private static final int PROFILE_USER_ID = 643; private static final String USER_INFO_DIR = "system" + File.separator + "users"; private static final String XML_SUFFIX = ".xml"; private static final String TAG_RESTRICTIONS = "restrictions"; @Rule public final ExtendedMockitoRule mExtendedMockitoRule = new ExtendedMockitoRule.Builder(this) .spyStatic(UserManager.class) Loading Loading @@ -530,6 +543,48 @@ public final class UserManagerServiceTest { assertThat(user1.name.length()).isEqualTo(4); } @Test public void testDefaultRestrictionsArePersistedAfterCreateUser() throws IOException, XmlPullParserException { UserInfo user = mUms.createUserWithThrow("Test", USER_TYPE_FULL_SECONDARY, 0); assertTrue(hasRestrictionsInUserXMLFile(user.id)); } /** * Returns true if the user's XML file has Default restrictions * @param userId Id of the user. */ private boolean hasRestrictionsInUserXMLFile(int userId) throws IOException, XmlPullParserException { FileInputStream is = new FileInputStream(getUserXmlFile(userId)); final TypedXmlPullParser parser = Xml.resolvePullParser(is); int type; while ((type = parser.next()) != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT) { // Skip } if (type != XmlPullParser.START_TAG) { return false; } int outerDepth = parser.getDepth(); while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { if (TAG_RESTRICTIONS.equals(parser.getName())) { return true; } } return false; } private File getUserXmlFile(int userId) { File file = new File(mTestDir, USER_INFO_DIR); return new File(file, userId + XML_SUFFIX); } private String generateLongString() { String partialString = "Test Name Test Name Test Name Test Name Test Name Test Name Test " + "Name Test Name Test Name Test Name "; //String of length 100 Loading