Skip to content

Commit a9afacc

Browse files
Victoria LeaseAndroid (Google) Code Review
authored andcommitted
Merge "multiuser support for LocationBlacklist" into jb-mr1-dev
2 parents dce8b94 + 83762d2 commit a9afacc

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

services/java/com/android/server/LocationManagerService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ Load package name(s) containing location provider support.
325325
* @param userId the new active user's UserId
326326
*/
327327
private void switchUser(int userId) {
328+
mBlacklist.switchUser(userId);
328329
//Log.d("LocationManagerService", "switchUser(" + mCurrentUserId + " -> " + userId + ")"); // TODO: remove this
329330
synchronized (mLock) {
330331
// TODO: inform previous user's Receivers that they will no longer receive updates

services/java/com/android/server/location/LocationBlacklist.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.content.Context;
2121
import android.database.ContentObserver;
2222
import android.os.Handler;
23+
import android.os.UserHandle;
2324
import android.provider.Settings;
2425
import android.util.Log;
2526
import android.util.Slog;
@@ -48,6 +49,8 @@ public final class LocationBlacklist extends ContentObserver {
4849
// all fields below synchronized on mLock
4950
private String[] mWhitelist = new String[0];
5051
private String[] mBlacklist = new String[0];
52+
53+
private int mCurrentUserId = UserHandle.USER_OWNER;
5154

5255
public LocationBlacklist(Context context, Handler handler) {
5356
super(handler);
@@ -56,20 +59,22 @@ public LocationBlacklist(Context context, Handler handler) {
5659

5760
public void init() {
5861
mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
59-
BLACKLIST_CONFIG_NAME), false, this);
62+
BLACKLIST_CONFIG_NAME), false, this, UserHandle.USER_ALL);
6063
// mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
61-
// WHITELIST_CONFIG_NAME), false, this);
64+
// WHITELIST_CONFIG_NAME), false, this, UserHandle.USER_ALL);
6265
reloadBlacklist();
6366
}
6467

68+
private void reloadBlacklistLocked() {
69+
mWhitelist = getStringArrayLocked(WHITELIST_CONFIG_NAME);
70+
Slog.i(TAG, "whitelist: " + Arrays.toString(mWhitelist));
71+
mBlacklist = getStringArrayLocked(BLACKLIST_CONFIG_NAME);
72+
Slog.i(TAG, "blacklist: " + Arrays.toString(mBlacklist));
73+
}
74+
6575
private void reloadBlacklist() {
66-
String blacklist[] = getStringArray(BLACKLIST_CONFIG_NAME);
67-
String whitelist[] = getStringArray(WHITELIST_CONFIG_NAME);
6876
synchronized (mLock) {
69-
mWhitelist = whitelist;
70-
Slog.i(TAG, "whitelist: " + Arrays.toString(mWhitelist));
71-
mBlacklist = blacklist;
72-
Slog.i(TAG, "blacklist: " + Arrays.toString(mBlacklist));
77+
reloadBlacklistLocked();
7378
}
7479
}
7580

@@ -78,7 +83,6 @@ private void reloadBlacklist() {
7883
* (package name matches blacklist, and does not match whitelist)
7984
*/
8085
public boolean isBlacklisted(String packageName) {
81-
/*
8286
synchronized (mLock) {
8387
for (String black : mBlacklist) {
8488
if (packageName.startsWith(black)) {
@@ -92,7 +96,6 @@ public boolean isBlacklisted(String packageName) {
9296
}
9397
}
9498
}
95-
*/
9699
return false;
97100
}
98101

@@ -113,8 +116,19 @@ public void onChange(boolean selfChange) {
113116
reloadBlacklist();
114117
}
115118

116-
private String[] getStringArray(String key) {
117-
String flatString = Settings.Secure.getString(mContext.getContentResolver(), key);
119+
public void switchUser(int userId) {
120+
synchronized(mLock) {
121+
mCurrentUserId = userId;
122+
reloadBlacklistLocked();
123+
}
124+
}
125+
126+
private String[] getStringArrayLocked(String key) {
127+
String flatString;
128+
synchronized(mLock) {
129+
flatString = Settings.Secure.getStringForUser(mContext.getContentResolver(), key,
130+
mCurrentUserId);
131+
}
118132
if (flatString == null) {
119133
return new String[0];
120134
}

0 commit comments

Comments
 (0)