blob: 8f5f0729c3b324e9a5124ce50042e821baba4b57 [file] [log] [blame]
Jason Monkf66d3772017-05-30 14:31:51 -04001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 * except in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11 * KIND, either express or implied. See the License for the specific language governing
12 * permissions and limitations under the License.
13 */
14
15package com.android.systemui.statusbar.policy;
16
Julia Reynolds9cf17562018-03-14 09:49:35 -040017import static junit.framework.Assert.assertFalse;
18import static junit.framework.Assert.assertTrue;
19
Jason Monkf66d3772017-05-30 14:31:51 -040020import static org.mockito.ArgumentMatchers.eq;
21import static org.mockito.Mockito.mock;
22import static org.mockito.Mockito.verify;
Julia Reynolds9cf17562018-03-14 09:49:35 -040023import static org.mockito.Mockito.when;
Jason Monkf66d3772017-05-30 14:31:51 -040024
Julia Reynolds9cf17562018-03-14 09:49:35 -040025import android.app.NotificationManager;
Jason Monkf66d3772017-05-30 14:31:51 -040026import android.os.Handler;
Jason Monk6dceace2018-05-15 20:24:07 -040027import android.os.Looper;
Julia Reynolds9cf17562018-03-14 09:49:35 -040028import android.provider.Settings;
Jason Monkf66d3772017-05-30 14:31:51 -040029import android.service.notification.ZenModeConfig;
30import android.support.test.filters.SmallTest;
31import android.testing.AndroidTestingRunner;
32import android.testing.TestableLooper.RunWithLooper;
33
34import com.android.systemui.SysuiTestCase;
35import com.android.systemui.statusbar.policy.ZenModeController.Callback;
36
Julia Reynolds9cf17562018-03-14 09:49:35 -040037import org.junit.Before;
Jason Monkf66d3772017-05-30 14:31:51 -040038import org.junit.Test;
39import org.junit.runner.RunWith;
Julia Reynolds9cf17562018-03-14 09:49:35 -040040import org.mockito.Mock;
41import org.mockito.MockitoAnnotations;
Jason Monkf66d3772017-05-30 14:31:51 -040042
43@SmallTest
44@RunWith(AndroidTestingRunner.class)
45@RunWithLooper
46public class ZenModeControllerImplTest extends SysuiTestCase {
47
48 private Callback mCallback;
Julia Reynolds9cf17562018-03-14 09:49:35 -040049 @Mock
50 NotificationManager mNm;
51 @Mock
52 ZenModeConfig mConfig;
53
54 private ZenModeControllerImpl mController;
55
56 @Before
57 public void setUp() {
58 MockitoAnnotations.initMocks(this);
59 mContext.addMockSystemService(NotificationManager.class, mNm);
60 when(mNm.getZenModeConfig()).thenReturn(mConfig);
61
Jason Monk6dceace2018-05-15 20:24:07 -040062 mController = new ZenModeControllerImpl(mContext, Handler.createAsync(Looper.myLooper()));
Julia Reynolds9cf17562018-03-14 09:49:35 -040063 }
Jason Monkf66d3772017-05-30 14:31:51 -040064
65 @Test
66 public void testRemoveDuringCallback() {
Jason Monkf66d3772017-05-30 14:31:51 -040067 mCallback = new Callback() {
68 @Override
69 public void onConfigChanged(ZenModeConfig config) {
Julia Reynolds9cf17562018-03-14 09:49:35 -040070 mController.removeCallback(mCallback);
Jason Monkf66d3772017-05-30 14:31:51 -040071 }
72 };
Julia Reynolds9cf17562018-03-14 09:49:35 -040073 mController.addCallback(mCallback);
Jason Monkf66d3772017-05-30 14:31:51 -040074 Callback mockCallback = mock(Callback.class);
Julia Reynolds9cf17562018-03-14 09:49:35 -040075 mController.addCallback(mockCallback);
76 mController.fireConfigChanged(null);
Jason Monkf66d3772017-05-30 14:31:51 -040077 verify(mockCallback).onConfigChanged(eq(null));
78 }
79
Julia Reynolds9cf17562018-03-14 09:49:35 -040080 @Test
81 public void testAreNotificationsHiddenInShade_zenOffShadeSuppressed() {
82 mConfig.suppressedVisualEffects =
83 NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
84 mController.updateZenMode(Settings.Global.ZEN_MODE_OFF);
85 mController.updateZenModeConfig();
86
87 assertFalse(mController.areNotificationsHiddenInShade());
88 }
89
90 @Test
91 public void testAreNotificationsHiddenInShade_zenOnShadeNotSuppressed() {
Beverly12196702018-12-12 15:05:51 -050092 NotificationManager.Policy policy = new NotificationManager.Policy(0, 0, 0,
93 NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR);
94 when(mNm.getConsolidatedNotificationPolicy()).thenReturn(policy);
95 mController.updateConsolidatedNotificationPolicy();
Julia Reynolds9cf17562018-03-14 09:49:35 -040096 mController.updateZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
Julia Reynolds9cf17562018-03-14 09:49:35 -040097
98 assertFalse(mController.areNotificationsHiddenInShade());
99 }
100
101 @Test
102 public void testAreNotificationsHiddenInShade_zenOnShadeSuppressed() {
Beverly12196702018-12-12 15:05:51 -0500103 NotificationManager.Policy policy = new NotificationManager.Policy(0, 0, 0,
104 NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST);
105 when(mNm.getConsolidatedNotificationPolicy()).thenReturn(policy);
106 mController.updateConsolidatedNotificationPolicy();
Julia Reynolds9cf17562018-03-14 09:49:35 -0400107 mController.updateZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
Julia Reynolds9cf17562018-03-14 09:49:35 -0400108
109 assertTrue(mController.areNotificationsHiddenInShade());
110 }
Beverly80313ca2018-05-10 16:43:52 -0400111
112 @Test
113 public void testAddNullCallback() {
114 mController.addCallback(null);
115 mController.fireConfigChanged(null);
116 }
117}