diff --git a/src/com/android/settings/notification/AbstractZenModePreferenceController.java b/src/com/android/settings/notification/AbstractZenModePreferenceController.java index ec275b2fef5..de2e8fd4c06 100644 --- a/src/com/android/settings/notification/AbstractZenModePreferenceController.java +++ b/src/com/android/settings/notification/AbstractZenModePreferenceController.java @@ -22,10 +22,12 @@ import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; +import android.os.UserHandle; import android.provider.Settings; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; +import com.android.internal.annotations.VisibleForTesting; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -37,7 +39,8 @@ abstract public class AbstractZenModePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause { - private SettingObserver mSettingObserver; + @VisibleForTesting + protected SettingObserver mSettingObserver; private final String KEY; final private NotificationManager mNotificationManager; @@ -94,8 +97,8 @@ abstract public class AbstractZenModePreferenceController extends } public void register(ContentResolver cr) { - cr.registerContentObserver(ZEN_MODE_URI, false, this); - cr.registerContentObserver(ZEN_MODE_CONFIG_ETAG_URI, false, this); + cr.registerContentObserver(ZEN_MODE_URI, false, this, UserHandle.USER_ALL); + cr.registerContentObserver(ZEN_MODE_CONFIG_ETAG_URI, false, this, UserHandle.USER_ALL); } public void unregister(ContentResolver cr) { diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeButtonPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeButtonPreferenceControllerTest.java index a1b4dab2529..a6f7b2bf76e 100644 --- a/tests/robotests/src/com/android/settings/notification/ZenModeButtonPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/ZenModeButtonPreferenceControllerTest.java @@ -130,4 +130,21 @@ public class ZenModeButtonPreferenceControllerTest { verify(mZenButtonOn).setVisibility(View.VISIBLE); verify(mZenButtonOff).setVisibility(View.GONE); } + + @Test + public void updateState_otherUserChangedZen() { + final Preference mockPref = mock(Preference.class); + Settings.Global.putInt(mContentResolver, ZEN_MODE, ZEN_MODE_OFF); + mController.updateState(mockPref); + verify(mZenButtonOn).setVisibility(View.VISIBLE); + verify(mZenButtonOff).setVisibility(View.GONE); + + Settings.Global.putInt(mContentResolver, ZEN_MODE, ZEN_MODE_IMPORTANT_INTERRUPTIONS); + final int GUEST_USER_ID = 10; + mController.mSettingObserver.onChange(false, + Settings.Global.getUriFor(Settings.Global.ZEN_MODE), GUEST_USER_ID); + + verify(mZenButtonOn).setVisibility(View.GONE); + verify(mZenButtonOff).setVisibility(View.VISIBLE); + } } \ No newline at end of file