ZenPreferences observe zen changes from USER_ALL
Zen manual rule changes are changed by USER_SYSTEM, so Zen Preference Controllers must register their content observers for zen changes and zen config changes to USER_ALL instead of just their own user id. Change-Id: I75194b62ab5e5b21dffbf04bba5009659bb41d81 Fixes: 70028673 Test: make ROBOTEST_FILTER=ZenModeButtonPreferenceControllerTest RunSettingsRoboTests -j40
This commit is contained in:
@@ -22,10 +22,12 @@ import android.content.Context;
|
|||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
@@ -37,7 +39,8 @@ abstract public class AbstractZenModePreferenceController extends
|
|||||||
AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver,
|
AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver,
|
||||||
OnResume, OnPause {
|
OnResume, OnPause {
|
||||||
|
|
||||||
private SettingObserver mSettingObserver;
|
@VisibleForTesting
|
||||||
|
protected SettingObserver mSettingObserver;
|
||||||
private final String KEY;
|
private final String KEY;
|
||||||
final private NotificationManager mNotificationManager;
|
final private NotificationManager mNotificationManager;
|
||||||
|
|
||||||
@@ -94,8 +97,8 @@ abstract public class AbstractZenModePreferenceController extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void register(ContentResolver cr) {
|
public void register(ContentResolver cr) {
|
||||||
cr.registerContentObserver(ZEN_MODE_URI, false, this);
|
cr.registerContentObserver(ZEN_MODE_URI, false, this, UserHandle.USER_ALL);
|
||||||
cr.registerContentObserver(ZEN_MODE_CONFIG_ETAG_URI, false, this);
|
cr.registerContentObserver(ZEN_MODE_CONFIG_ETAG_URI, false, this, UserHandle.USER_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unregister(ContentResolver cr) {
|
public void unregister(ContentResolver cr) {
|
||||||
|
@@ -130,4 +130,21 @@ public class ZenModeButtonPreferenceControllerTest {
|
|||||||
verify(mZenButtonOn).setVisibility(View.VISIBLE);
|
verify(mZenButtonOn).setVisibility(View.VISIBLE);
|
||||||
verify(mZenButtonOff).setVisibility(View.GONE);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user