diff options
author | Chris Wren <cwren@google.com> | 2017-05-10 15:08:36 -0400 |
---|---|---|
committer | Chris Wren <cwren@google.com> | 2017-05-11 17:17:15 -0400 |
commit | 629c20c9991ab8da3732ba554794fffd7922f185 (patch) | |
tree | d89cec1fc3904207928bd60aafa777fb345398e4 | |
parent | 6307ac52e53cc25949c5d2e26015702cbc45899b (diff) |
extend TestableSettingsProvider to multiuser
Bug: 36021111
Test: runtest -x frameworks/base/tests/testables
Change-Id: I13dc2b33a39a01954034fa3d69ae9645d23c3304
-rw-r--r-- | tests/testables/src/android/testing/TestableSettingsProvider.java | 20 | ||||
-rw-r--r-- | tests/testables/tests/src/android/testing/TestableSettingsProviderTest.java | 10 |
2 files changed, 24 insertions, 6 deletions
diff --git a/tests/testables/src/android/testing/TestableSettingsProvider.java b/tests/testables/src/android/testing/TestableSettingsProvider.java index 13056cf677d6..fe97bca1ef41 100644 --- a/tests/testables/src/android/testing/TestableSettingsProvider.java +++ b/tests/testables/src/android/testing/TestableSettingsProvider.java @@ -18,6 +18,7 @@ import android.content.ContentProviderClient; import android.content.Context; import android.os.Bundle; import android.os.RemoteException; +import android.os.UserHandle; import android.provider.Settings; import android.test.mock.MockContentProvider; import android.util.Log; @@ -48,9 +49,10 @@ public class TestableSettingsProvider extends MockContentProvider { } void clearValuesAndCheck(Context context) { - mValues.put(key("global", MY_UNIQUE_KEY), MY_UNIQUE_KEY); - mValues.put(key("secure", MY_UNIQUE_KEY), MY_UNIQUE_KEY); - mValues.put(key("system", MY_UNIQUE_KEY), MY_UNIQUE_KEY); + int userId = UserHandle.myUserId(); + mValues.put(key("global", MY_UNIQUE_KEY, userId), MY_UNIQUE_KEY); + mValues.put(key("secure", MY_UNIQUE_KEY, userId), MY_UNIQUE_KEY); + mValues.put(key("system", MY_UNIQUE_KEY, userId), MY_UNIQUE_KEY); // Verify that if any test is using TestableContext, they all have the correct settings // provider. @@ -66,11 +68,12 @@ public class TestableSettingsProvider extends MockContentProvider { public Bundle call(String method, String arg, Bundle extras) { // Methods are "GET_system", "GET_global", "PUT_secure", etc. + final int userId = extras.getInt(Settings.CALL_METHOD_USER_KEY, 0); final String[] commands = method.split("_", 2); final String op = commands[0]; final String table = commands[1]; - String k = key(table, arg); + String k = key(table, arg, userId); String value; Bundle out = new Bundle(); switch (op) { @@ -103,8 +106,13 @@ public class TestableSettingsProvider extends MockContentProvider { return out; } - private static String key(String table, String key) { - return table + "_" + key; + private static String key(String table, String key, int userId) { + if ("global".equals(table)) { + return table + "_" + key; + } else { + return table + "_" + userId + "_" + key; + } + } /** diff --git a/tests/testables/tests/src/android/testing/TestableSettingsProviderTest.java b/tests/testables/tests/src/android/testing/TestableSettingsProviderTest.java index 1f71867396ab..0e2cc576270e 100644 --- a/tests/testables/tests/src/android/testing/TestableSettingsProviderTest.java +++ b/tests/testables/tests/src/android/testing/TestableSettingsProviderTest.java @@ -66,6 +66,16 @@ public class TestableSettingsProviderTest { } @Test + public void testSeparateUsers() { + Secure.putStringForUser(mContentResolver, NONEXISTENT_SETTING, "something", 0); + Secure.putStringForUser(mContentResolver, NONEXISTENT_SETTING, "else", 1); + assertEquals("something", + Secure.getStringForUser(mContentResolver, NONEXISTENT_SETTING, 0)); + assertEquals("else", + Secure.getStringForUser(mContentResolver, NONEXISTENT_SETTING, 1)); + } + + @Test public void testPassThrough() { // Grab the value of a setting that is not overridden. assertTrue(Secure.getInt(mContentResolver, Secure.USER_SETUP_COMPLETE, 0) != 0); |