Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c681698 authored by Victoria Lease's avatar Victoria Lease Committed by Android Git Automerger
Browse files

am a9afaccf: Merge "multiuser support for LocationBlacklist" into jb-mr1-dev

* commit 'a9afaccf':
  multiuser support for LocationBlacklist
parents 4fb5b85a a9afaccf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -325,6 +325,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
     * @param userId the new active user's UserId
     */
    private void switchUser(int userId) {
        mBlacklist.switchUser(userId);
        //Log.d("LocationManagerService", "switchUser(" + mCurrentUserId + " -> " + userId + ")"); // TODO: remove this
        synchronized (mLock) {
            // TODO: inform previous user's Receivers that they will no longer receive updates
+26 −12
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package com.android.server.location;
import android.content.Context;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
import android.util.Slog;
@@ -49,6 +50,8 @@ public final class LocationBlacklist extends ContentObserver {
    private String[] mWhitelist = new String[0];
    private String[] mBlacklist = new String[0];

    private int mCurrentUserId = UserHandle.USER_OWNER;
    
    public LocationBlacklist(Context context, Handler handler) {
        super(handler);
        mContext = context;
@@ -56,21 +59,23 @@ public final class LocationBlacklist extends ContentObserver {

    public void init() {
        mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
                BLACKLIST_CONFIG_NAME), false, this);
                BLACKLIST_CONFIG_NAME), false, this, UserHandle.USER_ALL);
//        mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
//                WHITELIST_CONFIG_NAME), false, this);
//                WHITELIST_CONFIG_NAME), false, this, UserHandle.USER_ALL);
        reloadBlacklist();
    }

    private void reloadBlacklist() {
        String blacklist[] = getStringArray(BLACKLIST_CONFIG_NAME);
        String whitelist[] = getStringArray(WHITELIST_CONFIG_NAME);
        synchronized (mLock) {
            mWhitelist = whitelist;
    private void reloadBlacklistLocked() {
        mWhitelist = getStringArrayLocked(WHITELIST_CONFIG_NAME);
        Slog.i(TAG, "whitelist: " + Arrays.toString(mWhitelist));
            mBlacklist = blacklist;
        mBlacklist = getStringArrayLocked(BLACKLIST_CONFIG_NAME);
        Slog.i(TAG, "blacklist: " + Arrays.toString(mBlacklist));
    }

    private void reloadBlacklist() {
        synchronized (mLock) {
            reloadBlacklistLocked();
        }
    }

    /**
@@ -78,7 +83,6 @@ public final class LocationBlacklist extends ContentObserver {
     * (package name matches blacklist, and does not match whitelist)
     */
    public boolean isBlacklisted(String packageName) {
        /*
        synchronized (mLock) {
            for (String black : mBlacklist) {
                if (packageName.startsWith(black)) {
@@ -92,7 +96,6 @@ public final class LocationBlacklist extends ContentObserver {
                }
            }
        }
        */
        return false;
    }

@@ -113,8 +116,19 @@ public final class LocationBlacklist extends ContentObserver {
        reloadBlacklist();
    }

    private String[] getStringArray(String key) {
        String flatString = Settings.Secure.getString(mContext.getContentResolver(), key);
    public void switchUser(int userId) {
        synchronized(mLock) {
            mCurrentUserId = userId;
            reloadBlacklistLocked();
        }
    }

    private String[] getStringArrayLocked(String key) {
        String flatString;
        synchronized(mLock) {
            flatString = Settings.Secure.getStringForUser(mContext.getContentResolver(), key,
                    mCurrentUserId);
        }
        if (flatString == null) {
            return new String[0];
        }