blob: 3c5425ce7d6f889bc2a0479987fcf1796d1d1487 [file] [log] [blame]
Jason Monkaa573e92017-01-27 17:00:29 -05001/*
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.phone;
16
Charles Chenf3d295c2018-11-30 18:15:21 +080017import static android.view.Display.DEFAULT_DISPLAY;
18
Jason Monkaa573e92017-01-27 17:00:29 -050019import static org.junit.Assert.assertEquals;
20import static org.mockito.Matchers.eq;
Jason Monk60033fc2017-03-24 11:26:35 -040021import static org.mockito.Mockito.atLeast;
Jason Monkaa573e92017-01-27 17:00:29 -050022import static org.mockito.Mockito.mock;
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080023import static org.mockito.Mockito.reset;
Jason Monkaa573e92017-01-27 17:00:29 -050024import static org.mockito.Mockito.when;
25
26import android.app.StatusBarManager;
Jason Monkfba8faf2017-05-23 10:42:59 -040027import android.support.test.filters.SmallTest;
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080028import android.testing.AndroidTestingRunner;
29import android.testing.TestableLooper.RunWithLooper;
Jason Monkaa573e92017-01-27 17:00:29 -050030import android.view.View;
31import android.view.ViewPropertyAnimator;
32
Jason Monkaa573e92017-01-27 17:00:29 -050033import com.android.systemui.R;
Jason Monk340b0e52017-03-08 14:57:56 -050034import com.android.systemui.SysuiBaseFragmentTest;
Beverly8fdb5332019-02-04 14:29:49 -050035import com.android.systemui.plugins.statusbar.StatusBarStateController;
Jason Monkaa573e92017-01-27 17:00:29 -050036import com.android.systemui.statusbar.CommandQueue;
Jason Monkaa573e92017-01-27 17:00:29 -050037import com.android.systemui.tuner.TunerService;
38
39import org.junit.Before;
40import org.junit.Test;
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080041import org.junit.runner.RunWith;
Jason Monkaa573e92017-01-27 17:00:29 -050042import org.mockito.Mockito;
43
Jason Monk340b0e52017-03-08 14:57:56 -050044@RunWith(AndroidTestingRunner.class)
Aaron Heuckroth5acf9ec2018-11-29 13:05:21 -050045@RunWithLooper()
Jason Monkfba8faf2017-05-23 10:42:59 -040046@SmallTest
Jason Monk340b0e52017-03-08 14:57:56 -050047public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
Jason Monkaa573e92017-01-27 17:00:29 -050048
49 private NotificationIconAreaController mMockNotificiationAreaController;
50 private View mNotificationAreaInner;
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080051 private StatusBarStateController mStatusBarStateController;
Jason Monkaa573e92017-01-27 17:00:29 -050052
53 public CollapsedStatusBarFragmentTest() {
54 super(CollapsedStatusBarFragment.class);
55 }
56
57 @Before
58 public void setup() {
Jason Monk340b0e52017-03-08 14:57:56 -050059 mSysuiContext.putComponent(CommandQueue.class, mock(CommandQueue.class));
Lucas Dupin7fc9dc12019-01-03 09:19:43 -080060 StatusBar statusBar = mock(StatusBar.class);
61 mSysuiContext.putComponent(StatusBar.class, statusBar);
Jason Monk340b0e52017-03-08 14:57:56 -050062 mSysuiContext.putComponent(TunerService.class, mock(TunerService.class));
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080063 mStatusBarStateController = mDependency
64 .injectMockDependency(StatusBarStateController.class);
Jason Monkaa573e92017-01-27 17:00:29 -050065 injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
66 mMockNotificiationAreaController = mock(NotificationIconAreaController.class);
67 mNotificationAreaInner = mock(View.class);
Lucas Dupin7fc9dc12019-01-03 09:19:43 -080068 when(statusBar.getPanel()).thenReturn(mock(NotificationPanelView.class));
Jason Monkaa573e92017-01-27 17:00:29 -050069 when(mNotificationAreaInner.animate()).thenReturn(mock(ViewPropertyAnimator.class));
70 when(mMockNotificiationAreaController.getNotificationInnerAreaView()).thenReturn(
71 mNotificationAreaInner);
72 }
73
74 @Test
75 public void testDisableNone() throws Exception {
Jason Monk28d5d222017-02-02 13:08:31 -050076 mFragments.dispatchResume();
77 processAllMessages();
Jason Monkaa573e92017-01-27 17:00:29 -050078
79 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
80 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +080081 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -050082
83 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
84 .getVisibility());
Evan Laird058c8ae2018-01-12 14:26:10 -050085 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.clock)
86 .getVisibility());
Jason Monkaa573e92017-01-27 17:00:29 -050087 }
88
89 @Test
90 public void testDisableSystemInfo() throws Exception {
Jason Monk28d5d222017-02-02 13:08:31 -050091 mFragments.dispatchResume();
92 processAllMessages();
Jason Monkaa573e92017-01-27 17:00:29 -050093
94 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
95 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +080096 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_SYSTEM_INFO, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -050097
98 assertEquals(View.INVISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
99 .getVisibility());
100
Charles Chenf3d295c2018-11-30 18:15:21 +0800101 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -0500102
103 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
104 .getVisibility());
105 }
106
107 @Test
108 public void testDisableNotifications() throws Exception {
Jason Monk28d5d222017-02-02 13:08:31 -0500109 mFragments.dispatchResume();
110 processAllMessages();
Jason Monkaa573e92017-01-27 17:00:29 -0500111
112 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
113 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +0800114 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -0500115
116 Mockito.verify(mNotificationAreaInner).setVisibility(eq(View.INVISIBLE));
117
Charles Chenf3d295c2018-11-30 18:15:21 +0800118 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -0500119
Jason Monk60033fc2017-03-24 11:26:35 -0400120 Mockito.verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE));
Jason Monkaa573e92017-01-27 17:00:29 -0500121 }
Evan Laird4b68e2f72018-03-29 18:21:48 -0400122
123 @Test
124 public void testDisableClock() throws Exception {
125 mFragments.dispatchResume();
126 processAllMessages();
127
128 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
129 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +0800130 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_CLOCK, 0, false);
Evan Laird4b68e2f72018-03-29 18:21:48 -0400131
Evan Laird74435e62018-05-04 11:58:30 -0400132 assertEquals(View.GONE, mFragment.getView().findViewById(R.id.clock).getVisibility());
Evan Laird4b68e2f72018-03-29 18:21:48 -0400133
Charles Chenf3d295c2018-11-30 18:15:21 +0800134 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Evan Laird4b68e2f72018-03-29 18:21:48 -0400135
136 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.clock).getVisibility());
137 }
Lucas Dupin2e43cfc2018-11-12 14:07:18 -0800138
139 @Test
140 public void testOnDozingChanged() throws Exception {
141 mFragments.dispatchResume();
142 processAllMessages();
143
144 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
145 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +0800146 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false);
Lucas Dupin2e43cfc2018-11-12 14:07:18 -0800147
148 Mockito.verify(mNotificationAreaInner).setVisibility(eq(View.INVISIBLE));
149
150 reset(mStatusBarStateController);
151 when(mStatusBarStateController.isDozing()).thenReturn(true);
152 fragment.onDozingChanged(true);
153
154 Mockito.verify(mStatusBarStateController).isDozing();
155 Mockito.verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE));
156 }
Jason Monkaa573e92017-01-27 17:00:29 -0500157}