ZenModeBackend gets newest notification policy

Previously, notification policy wouldn't be updated
so behavior zen mode settings pages wouldn't update
when an app changed the notification policy.  Now
notification policy will be updated on updateState of
each AbstractZenModePreferenceController.

Bug: 70662324
Test: make RunSettingsRoboTests -j40
Change-Id: Ibee20e4f27e0c833e05230ea8a3ea2cc75ae6bf0
diff --git a/src/com/android/settings/notification/AbstractZenModePreferenceController.java b/src/com/android/settings/notification/AbstractZenModePreferenceController.java
index 33c027c..81ceca1 100644
--- a/src/com/android/settings/notification/AbstractZenModePreferenceController.java
+++ b/src/com/android/settings/notification/AbstractZenModePreferenceController.java
@@ -31,7 +31,6 @@
 import android.service.notification.ZenModeConfig;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.core.PreferenceControllerMixin;
@@ -54,6 +53,7 @@
     final private NotificationManager mNotificationManager;
     protected static ZenModeConfigWrapper mZenModeConfigWrapper;
     protected MetricsFeatureProvider mMetricsFeatureProvider;
+    protected final ZenModeBackend mBackend;
 
     public AbstractZenModePreferenceController(Context context, String key,
             Lifecycle lifecycle) {
@@ -68,6 +68,7 @@
 
         final FeatureFactory featureFactory = FeatureFactory.getFactory(mContext);
         mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
+        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
@@ -90,6 +91,14 @@
         }
     }
 
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+
+        mBackend.updatePolicy();
+        mBackend.updateZenMode();
+    }
+
     protected NotificationManager.Policy getPolicy() {
         return mNotificationManager.getNotificationPolicy();
     }
@@ -99,8 +108,8 @@
     }
 
     protected int getZenMode() {
-        return Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.ZEN_MODE, 0);
+        return Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.ZEN_MODE,
+                mBackend.mZenMode);
     }
 
     class SettingObserver extends ContentObserver {
@@ -188,7 +197,6 @@
                     }
                 }
 
-
                 return endTimeMs;
             }
 
diff --git a/src/com/android/settings/notification/ZenModeAlarmsPreferenceController.java b/src/com/android/settings/notification/ZenModeAlarmsPreferenceController.java
index a15f7fc..af59107 100644
--- a/src/com/android/settings/notification/ZenModeAlarmsPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeAlarmsPreferenceController.java
@@ -30,11 +30,9 @@
         AbstractZenModePreferenceController implements Preference.OnPreferenceChangeListener {
 
     protected static final String KEY = "zen_mode_alarms";
-    private final ZenModeBackend mBackend;
 
     public ZenModeAlarmsPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeBackend.java b/src/com/android/settings/notification/ZenModeBackend.java
index 945da0b..6cee28e 100644
--- a/src/com/android/settings/notification/ZenModeBackend.java
+++ b/src/com/android/settings/notification/ZenModeBackend.java
@@ -82,7 +82,6 @@
         mZenMode = zenMode;
     }
 
-    /** gets last zen mode set by setZenMode or updateZenMode **/
     protected int getZenMode() {
         mZenMode = Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.ZEN_MODE, mZenMode);
diff --git a/src/com/android/settings/notification/ZenModeButtonPreferenceController.java b/src/com/android/settings/notification/ZenModeButtonPreferenceController.java
index 1886dab..f5169f0 100644
--- a/src/com/android/settings/notification/ZenModeButtonPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeButtonPreferenceController.java
@@ -34,11 +34,9 @@
     protected static final String KEY = "zen_mode_settings_button_container";
     private Button mZenButtonOn;
     private Button mZenButtonOff;
-    private ZenModeBackend mBackend;
 
     public ZenModeButtonPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeCallsPreferenceController.java b/src/com/android/settings/notification/ZenModeCallsPreferenceController.java
index d952c11..3e2f802 100644
--- a/src/com/android/settings/notification/ZenModeCallsPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeCallsPreferenceController.java
@@ -26,11 +26,9 @@
 public class ZenModeCallsPreferenceController extends AbstractZenModePreferenceController {
 
     protected static final String KEY = "zen_mode_calls";
-    private final ZenModeBackend mBackend;
 
     public ZenModeCallsPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeEventsPreferenceController.java b/src/com/android/settings/notification/ZenModeEventsPreferenceController.java
index be5e6d6..4423494 100644
--- a/src/com/android/settings/notification/ZenModeEventsPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeEventsPreferenceController.java
@@ -31,11 +31,9 @@
         implements Preference.OnPreferenceChangeListener {
 
     protected static final String KEY = "zen_mode_events";
-        private final ZenModeBackend mBackend;
 
     public ZenModeEventsPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeMessagesPreferenceController.java b/src/com/android/settings/notification/ZenModeMessagesPreferenceController.java
index dad6cf1..0ffc44d 100644
--- a/src/com/android/settings/notification/ZenModeMessagesPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeMessagesPreferenceController.java
@@ -10,11 +10,9 @@
 public class ZenModeMessagesPreferenceController extends AbstractZenModePreferenceController {
 
     protected static final String KEY = "zen_mode_messages";
-    private final ZenModeBackend mBackend;
 
     public ZenModeMessagesPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeRemindersPreferenceController.java b/src/com/android/settings/notification/ZenModeRemindersPreferenceController.java
index 99a4f0d7..b6c2922 100644
--- a/src/com/android/settings/notification/ZenModeRemindersPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeRemindersPreferenceController.java
@@ -30,11 +30,9 @@
         implements Preference.OnPreferenceChangeListener {
 
     protected static final String KEY = "zen_mode_reminders";
-    private final ZenModeBackend mBackend;
 
     public ZenModeRemindersPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeRepeatCallersPreferenceController.java b/src/com/android/settings/notification/ZenModeRepeatCallersPreferenceController.java
index 82fe865..d5c0a00 100644
--- a/src/com/android/settings/notification/ZenModeRepeatCallersPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeRepeatCallersPreferenceController.java
@@ -30,11 +30,9 @@
         implements Preference.OnPreferenceChangeListener {
 
     protected static final String KEY = "zen_mode_repeat_callers";
-    private final ZenModeBackend mBackend;
 
     public ZenModeRepeatCallersPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeScreenOffPreferenceController.java b/src/com/android/settings/notification/ZenModeScreenOffPreferenceController.java
index 0ba24c0..81c9b0d 100644
--- a/src/com/android/settings/notification/ZenModeScreenOffPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeScreenOffPreferenceController.java
@@ -29,11 +29,9 @@
         AbstractZenModePreferenceController implements Preference.OnPreferenceChangeListener {
 
     protected static final String KEY = "zen_mode_screen_off";
-    private final ZenModeBackend mBackend;
 
     public ZenModeScreenOffPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeScreenOnPreferenceController.java b/src/com/android/settings/notification/ZenModeScreenOnPreferenceController.java
index bcb1af8..bab4dd1 100644
--- a/src/com/android/settings/notification/ZenModeScreenOnPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeScreenOnPreferenceController.java
@@ -29,11 +29,9 @@
         AbstractZenModePreferenceController implements Preference.OnPreferenceChangeListener {
 
     protected static final String KEY = "zen_mode_screen_on";
-    private final ZenModeBackend mBackend;
 
     public ZenModeScreenOnPreferenceController(Context context, Lifecycle lifecycle) {
         super(context, KEY, lifecycle);
-        mBackend = ZenModeBackend.getInstance(context);
     }
 
     @Override