|
19 | 19 | import android.content.ContentResolver; |
20 | 20 | import android.content.ContentUris; |
21 | 21 | import android.content.ContentValues; |
| 22 | +import android.content.Context; |
22 | 23 | import android.content.Intent; |
23 | 24 | import android.content.pm.PackageManager; |
24 | 25 | import android.content.pm.ResolveInfo; |
| 26 | +import android.content.pm.UserInfo; |
25 | 27 | import android.database.Cursor; |
26 | 28 | import android.net.Uri; |
| 29 | +import android.os.UserHandle; |
| 30 | +import android.os.UserManager; |
27 | 31 | import android.provider.Settings; |
28 | 32 | import android.test.AndroidTestCase; |
29 | 33 | import android.test.suitebuilder.annotation.MediumTest; |
@@ -197,6 +201,53 @@ public void testParseProviderList() { |
197 | 201 | Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)); |
198 | 202 | } |
199 | 203 |
|
| 204 | + private boolean findUser(UserManager um, int userHandle) { |
| 205 | + for (UserInfo user : um.getUsers()) { |
| 206 | + if (user.id == userHandle) { |
| 207 | + return true; |
| 208 | + } |
| 209 | + } |
| 210 | + return false; |
| 211 | + } |
| 212 | + |
| 213 | + @MediumTest |
| 214 | + public void testPerUserSettings() { |
| 215 | + UserManager um = (UserManager) getContext().getSystemService(Context.USER_SERVICE); |
| 216 | + ContentResolver r = getContext().getContentResolver(); |
| 217 | + |
| 218 | + // Make sure there's an owner |
| 219 | + assertTrue(findUser(um, UserHandle.USER_OWNER)); |
| 220 | + |
| 221 | + // create a new user to use for testing |
| 222 | + UserInfo user = um.createUser("TestUser1", UserInfo.FLAG_GUEST); |
| 223 | + assertTrue(user != null); |
| 224 | + |
| 225 | + try { |
| 226 | + // Write some settings for that user as well as the current user |
| 227 | + final String TEST_KEY = "test_setting"; |
| 228 | + final int SELF_VALUE = 40; |
| 229 | + final int OTHER_VALUE = 27; |
| 230 | + |
| 231 | + Settings.System.putInt(r, TEST_KEY, SELF_VALUE); |
| 232 | + Settings.System.putIntForUser(r, TEST_KEY, OTHER_VALUE, user.id); |
| 233 | + |
| 234 | + // Verify that they read back as intended |
| 235 | + int myValue = Settings.System.getInt(r, TEST_KEY, 0); |
| 236 | + int otherValue = Settings.System.getIntForUser(r, TEST_KEY, 0, user.id); |
| 237 | + assertTrue("Running as user " + UserHandle.myUserId() |
| 238 | + + " and reading/writing as user " + user.id |
| 239 | + + ", expected to read " + SELF_VALUE + " but got " + myValue, |
| 240 | + myValue == SELF_VALUE); |
| 241 | + assertTrue("Running as user " + UserHandle.myUserId() |
| 242 | + + " and reading/writing as user " + user.id |
| 243 | + + ", expected to read " + OTHER_VALUE + " but got " + otherValue, |
| 244 | + otherValue == OTHER_VALUE); |
| 245 | + } finally { |
| 246 | + // Tidy up |
| 247 | + um.removeUser(user.id); |
| 248 | + } |
| 249 | + } |
| 250 | + |
200 | 251 | @SmallTest |
201 | 252 | public void testSettings() { |
202 | 253 | assertCanBeHandled(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)); |
|
0 commit comments