Merge "Fix ColorInversionTile for secondary users" into lmp-dev
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index cb685fe..6ef6e9e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -123,7 +123,7 @@
     }
 
     public void userSwitch(int newUserId) {
-        mHandler.obtainMessage(H.USER_SWITCH, newUserId).sendToTarget();
+        mHandler.obtainMessage(H.USER_SWITCH, newUserId, 0).sendToTarget();
     }
 
     public void fireToggleStateChanged(boolean state) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java
index 3ed3d30..0ab6626 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.qs;
 
+import android.app.ActivityManager;
 import android.content.Context;
 import android.database.ContentObserver;
 import android.os.Handler;
@@ -28,32 +29,33 @@
     private final Context mContext;
     private final String mSettingName;
 
+    private boolean mListening;
+    private int mUserId;
+
     protected abstract void handleValueChanged(int value);
 
     public SecureSetting(Context context, Handler handler, String settingName) {
         super(handler);
         mContext = context;
         mSettingName = settingName;
-        rebindForCurrentUser();
-    }
-
-    public void rebindForCurrentUser() {
+        mUserId = ActivityManager.getCurrentUser();
         setListening(true);
     }
 
     public int getValue() {
-        return Secure.getInt(mContext.getContentResolver(), mSettingName, 0);
+        return Secure.getIntForUser(mContext.getContentResolver(), mSettingName, 0, mUserId);
     }
 
     public void setValue(int value) {
-        Secure.putInt(mContext.getContentResolver(), mSettingName, value);
+        Secure.putIntForUser(mContext.getContentResolver(), mSettingName, value, mUserId);
     }
 
     @Override
     public void setListening(boolean listening) {
+        mListening = listening;
         if (listening) {
             mContext.getContentResolver().registerContentObserver(
-                    Secure.getUriFor(mSettingName), false, this);
+                    Secure.getUriFor(mSettingName), false, this, mUserId);
         } else {
             mContext.getContentResolver().unregisterContentObserver(this);
         }
@@ -63,4 +65,12 @@
     public void onChange(boolean selfChange) {
         handleValueChanged(getValue());
     }
+
+    public void setUserId(int userId) {
+        mUserId = userId;
+        if (mListening) {
+            setListening(false);
+            setListening(true);
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
index a62bbff..01849c1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
@@ -71,7 +71,8 @@
 
     @Override
     protected void handleUserSwitch(int newUserId) {
-        mSetting.rebindForCurrentUser();
+        mSetting.setUserId(newUserId);
+        handleRefreshState(mSetting.getValue());
     }
 
     @Override