summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaggie Benthall <mbenthall@google.com>2013-02-07 00:04:59 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-02-07 00:04:59 +0000
commit1095d9ac5df839408b9a549cc638c2909d98dfac (patch)
treed06c6f1bd7202a8e02e376028f3f080c6ffaecfc
parent08d11e1fa939ecdda1ecc8bda750c07e924f06aa (diff)
parentd2726582f135383e56661bc41d750966642dab45 (diff)
downloadframeworks_base-1095d9ac5df839408b9a549cc638c2909d98dfac.zip
frameworks_base-1095d9ac5df839408b9a549cc638c2909d98dfac.tar.gz
frameworks_base-1095d9ac5df839408b9a549cc638c2909d98dfac.tar.bz2
Merge "Fix for SettingsProvider to query for correct user."
-rw-r--r--core/tests/coretests/src/android/provider/SettingsProviderTest.java36
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java6
2 files changed, 39 insertions, 3 deletions
diff --git a/core/tests/coretests/src/android/provider/SettingsProviderTest.java b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
index 6edd2dc..131651a 100644
--- a/core/tests/coretests/src/android/provider/SettingsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
@@ -132,6 +132,42 @@ public class SettingsProviderTest extends AndroidTestCase {
}
@MediumTest
+ public void testSettingsChangeForOtherUser() {
+ UserManager um = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
+ ContentResolver r = getContext().getContentResolver();
+
+ // Make sure there's an owner
+ assertTrue(findUser(um, UserHandle.USER_OWNER));
+
+ // create a new user to use for testing
+ UserInfo otherUser = um.createUser("TestUser1", UserInfo.FLAG_GUEST);
+ assertTrue(otherUser != null);
+ try {
+ assertNotSame("Current calling user id should not be the new guest user",
+ otherUser.id, UserHandle.getCallingUserId());
+
+ Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "gps");
+ Settings.Secure.putStringForUser(r,
+ Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network", otherUser.id);
+
+ assertEquals("gps",
+ Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
+ assertEquals("network", Settings.Secure.getStringForUser(
+ r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, otherUser.id));
+
+ assertNotSame("Current calling user id should not be the new guest user",
+ otherUser.id, UserHandle.getCallingUserId());
+ Settings.Secure.setLocationProviderEnabledForUser(r, "network", false, otherUser.id);
+ assertEquals("", Settings.Secure.getStringForUser(
+ r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, otherUser.id));
+
+ } finally {
+ // Tidy up
+ um.removeUser(otherUser.id);
+ }
+ }
+
+ @MediumTest
public void testRowNumberContentUri() {
ContentResolver r = getContext().getContentResolver();
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 485908e..45319a8 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -775,7 +775,7 @@ public class SettingsProvider extends ContentProvider {
* @returns whether the database needs to be updated or not, also modifying
* 'initialValues' if needed.
*/
- private boolean parseProviderList(Uri url, ContentValues initialValues) {
+ private boolean parseProviderList(Uri url, ContentValues initialValues, int desiredUser) {
String value = initialValues.getAsString(Settings.Secure.VALUE);
String newProviders = null;
if (value != null && value.length() > 1) {
@@ -788,7 +788,7 @@ public class SettingsProvider extends ContentProvider {
String providers = "";
String[] columns = {Settings.Secure.VALUE};
String where = Settings.Secure.NAME + "=\'" + Settings.Secure.LOCATION_PROVIDERS_ALLOWED + "\'";
- Cursor cursor = query(url, columns, where, null, null);
+ Cursor cursor = queryForUser(url, columns, where, null, null, desiredUser);
if (cursor != null && cursor.getCount() == 1) {
try {
cursor.moveToFirst();
@@ -865,7 +865,7 @@ public class SettingsProvider extends ContentProvider {
// Support enabling/disabling a single provider (using "+" or "-" prefix)
String name = initialValues.getAsString(Settings.Secure.NAME);
if (Settings.Secure.LOCATION_PROVIDERS_ALLOWED.equals(name)) {
- if (!parseProviderList(url, initialValues)) return null;
+ if (!parseProviderList(url, initialValues, desiredUserHandle)) return null;
}
// If this is an insert() of a key that has been migrated to the global store,