If zen settings are updated, don't show onboarding

Change-Id: I33c328e5d90f1b948c7dacb2e7f6265a1e496d35
Fixes: 109668117
Test: ZenOnboardingActivity
(cherry picked from commit da412f07e5a8833dc96f820ac13c44bb70114ac6)
diff --git a/src/com/android/settings/notification/ZenOnboardingActivity.java b/src/com/android/settings/notification/ZenOnboardingActivity.java
index fca1a6c..798b081 100644
--- a/src/com/android/settings/notification/ZenOnboardingActivity.java
+++ b/src/com/android/settings/notification/ZenOnboardingActivity.java
@@ -156,6 +156,12 @@
         // ZEN_SETTINGS_UPDATED is true for:
         // - fresh P+ device
         // - if zen visual effects values were changed by the user in Settings
+        NotificationManager nm = context.getSystemService(NotificationManager.class);
+        if (NotificationManager.Policy.areAllVisualEffectsSuppressed(
+                nm.getNotificationPolicy().suppressedVisualEffects)) {
+            Settings.Global.putInt(context.getContentResolver(),
+                    Settings.Global.ZEN_SETTINGS_UPDATED, 1);
+        }
         return Settings.Global.getInt(context.getContentResolver(),
                 Settings.Global.ZEN_SETTINGS_UPDATED, 0) != 0;
     }
diff --git a/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java b/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java
index e09dc0d..3ca9fda 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenOnboardingActivityTest.java
@@ -51,6 +51,7 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 public class ZenOnboardingActivityTest {
@@ -68,6 +69,8 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        ShadowApplication shadowApplication = ShadowApplication.getInstance();
+        shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm);
 
         mActivity = Robolectric.buildActivity(ZenOnboardingActivity.class)
                 .create()
@@ -124,6 +127,9 @@
 
     @Test
     public void isSuggestionComplete_zenUpdated() {
+        Policy policy = new Policy(0, 0, 0, 0);
+        when(mNm.getNotificationPolicy()).thenReturn(policy);
+
         setZenUpdated(true);
         setShowSettingsSuggestion(false);
         setWithinTimeThreshold(true);
@@ -132,6 +138,9 @@
 
     @Test
     public void isSuggestionComplete_withinTimeThreshold() {
+        Policy policy = new Policy(0, 0, 0, 0);
+        when(mNm.getNotificationPolicy()).thenReturn(policy);
+
         setZenUpdated(false);
         setShowSettingsSuggestion(false);
         setWithinTimeThreshold(true);
@@ -140,6 +149,9 @@
 
     @Test
     public void isSuggestionComplete_showSettingsSuggestionTrue() {
+        Policy policy = new Policy(0, 0, 0, 0);
+        when(mNm.getNotificationPolicy()).thenReturn(policy);
+
         setZenUpdated(false);
         setShowSettingsSuggestion(true);
         setWithinTimeThreshold(false);
@@ -148,17 +160,33 @@
 
     @Test
     public void isSuggestionComplete_showSettingsSuggestionFalse_notWithinTimeThreshold() {
+        Policy policy = new Policy(0, 0, 0, 0);
+        when(mNm.getNotificationPolicy()).thenReturn(policy);
+
         setZenUpdated(false);
         setShowSettingsSuggestion(false);
         setWithinTimeThreshold(false);
         assertThat(isSuggestionComplete(mContext)).isTrue();
     }
 
+
+    @Test
+    public void isSuggestionComplete_visualEffectsUpdated() {
+        // all values suppressed
+        Policy policy = new Policy(0, 0, 0, 511);
+        when(mNm.getNotificationPolicy()).thenReturn(policy);
+
+        setZenUpdated(false);
+        setShowSettingsSuggestion(true);
+        setWithinTimeThreshold(true);
+        assertThat(isSuggestionComplete(mContext)).isTrue();
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.ZEN_SETTINGS_UPDATED, -1)).isEqualTo(1);
+    }
+
+
     private void setZenUpdated(boolean updated) {
-        int zenUpdated = 0;
-        if (updated) {
-            zenUpdated = 1;
-        }
+        int zenUpdated = updated ? 1 : 0;
 
         Settings.Global.putInt(mContext.getContentResolver(),
                 Settings.Global.ZEN_SETTINGS_UPDATED, zenUpdated);