blob: 47e449212fa5fce9cd65be34f786eb924df2a6da [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;
Jason Monkf66d3772017-05-30 14:31:51 -040030import android.testing.AndroidTestingRunner;
31import android.testing.TestableLooper.RunWithLooper;
32
Brett Chabot84151d92019-02-27 15:37:59 -080033import androidx.test.filters.SmallTest;
34
Jason Monkf66d3772017-05-30 14:31:51 -040035import com.android.systemui.SysuiTestCase;
36import com.android.systemui.statusbar.policy.ZenModeController.Callback;
37
Julia Reynolds9cf17562018-03-14 09:49:35 -040038import org.junit.Before;
Jason Monkf66d3772017-05-30 14:31:51 -040039import org.junit.Test;
40import org.junit.runner.RunWith;
Julia Reynolds9cf17562018-03-14 09:49:35 -040041import org.mockito.Mock;
42import org.mockito.MockitoAnnotations;
Jason Monkf66d3772017-05-30 14:31:51 -040043
44@SmallTest
45@RunWith(AndroidTestingRunner.class)
46@RunWithLooper
47public class ZenModeControllerImplTest extends SysuiTestCase {
48
49 private Callback mCallback;
Julia Reynolds9cf17562018-03-14 09:49:35 -040050 @Mock
51 NotificationManager mNm;
52 @Mock
53 ZenModeConfig mConfig;
54
55 private ZenModeControllerImpl mController;
56
57 @Before
58 public void setUp() {
59 MockitoAnnotations.initMocks(this);
60 mContext.addMockSystemService(NotificationManager.class, mNm);
61 when(mNm.getZenModeConfig()).thenReturn(mConfig);
62
Jason Monk6dceace2018-05-15 20:24:07 -040063 mController = new ZenModeControllerImpl(mContext, Handler.createAsync(Looper.myLooper()));
Julia Reynolds9cf17562018-03-14 09:49:35 -040064 }
Jason Monkf66d3772017-05-30 14:31:51 -040065
66 @Test
67 public void testRemoveDuringCallback() {
Jason Monkf66d3772017-05-30 14:31:51 -040068 mCallback = new Callback() {
69 @Override
70 public void onConfigChanged(ZenModeConfig config) {
Julia Reynolds9cf17562018-03-14 09:49:35 -040071 mController.removeCallback(mCallback);
Jason Monkf66d3772017-05-30 14:31:51 -040072 }
73 };
Julia Reynolds9cf17562018-03-14 09:49:35 -040074 mController.addCallback(mCallback);
Jason Monkf66d3772017-05-30 14:31:51 -040075 Callback mockCallback = mock(Callback.class);
Julia Reynolds9cf17562018-03-14 09:49:35 -040076 mController.addCallback(mockCallback);
77 mController.fireConfigChanged(null);
Jason Monkf66d3772017-05-30 14:31:51 -040078 verify(mockCallback).onConfigChanged(eq(null));
79 }
80
Julia Reynolds9cf17562018-03-14 09:49:35 -040081 @Test
82 public void testAreNotificationsHiddenInShade_zenOffShadeSuppressed() {
83 mConfig.suppressedVisualEffects =
84 NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
85 mController.updateZenMode(Settings.Global.ZEN_MODE_OFF);
86 mController.updateZenModeConfig();
87
88 assertFalse(mController.areNotificationsHiddenInShade());
89 }
90
91 @Test
92 public void testAreNotificationsHiddenInShade_zenOnShadeNotSuppressed() {
Beverly12196702018-12-12 15:05:51 -050093 NotificationManager.Policy policy = new NotificationManager.Policy(0, 0, 0,
94 NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR);
95 when(mNm.getConsolidatedNotificationPolicy()).thenReturn(policy);
96 mController.updateConsolidatedNotificationPolicy();
Julia Reynolds9cf17562018-03-14 09:49:35 -040097 mController.updateZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
Julia Reynolds9cf17562018-03-14 09:49:35 -040098
99 assertFalse(mController.areNotificationsHiddenInShade());
100 }
101
102 @Test
103 public void testAreNotificationsHiddenInShade_zenOnShadeSuppressed() {
Beverly12196702018-12-12 15:05:51 -0500104 NotificationManager.Policy policy = new NotificationManager.Policy(0, 0, 0,
105 NotificationManager.Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST);
106 when(mNm.getConsolidatedNotificationPolicy()).thenReturn(policy);
107 mController.updateConsolidatedNotificationPolicy();
Julia Reynolds9cf17562018-03-14 09:49:35 -0400108 mController.updateZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
Julia Reynolds9cf17562018-03-14 09:49:35 -0400109
110 assertTrue(mController.areNotificationsHiddenInShade());
111 }
Beverly80313ca2018-05-10 16:43:52 -0400112
113 @Test
114 public void testAddNullCallback() {
115 mController.addCallback(null);
116 mController.fireConfigChanged(null);
117 }
118}