blob: add8838362be6292b0e8d242c1109d84125c0301 [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;
Jason Monkaa573e92017-01-27 17:00:29 -050035import com.android.systemui.statusbar.CommandQueue;
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080036import com.android.systemui.statusbar.StatusBarStateController;
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));
60 mSysuiContext.putComponent(StatusBar.class, mock(StatusBar.class));
61 mSysuiContext.putComponent(TunerService.class, mock(TunerService.class));
Lucas Dupin2e43cfc2018-11-12 14:07:18 -080062 mStatusBarStateController = mDependency
63 .injectMockDependency(StatusBarStateController.class);
Jason Monkaa573e92017-01-27 17:00:29 -050064 injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
65 mMockNotificiationAreaController = mock(NotificationIconAreaController.class);
66 mNotificationAreaInner = mock(View.class);
67 when(mNotificationAreaInner.animate()).thenReturn(mock(ViewPropertyAnimator.class));
68 when(mMockNotificiationAreaController.getNotificationInnerAreaView()).thenReturn(
69 mNotificationAreaInner);
70 }
71
72 @Test
73 public void testDisableNone() throws Exception {
Jason Monk28d5d222017-02-02 13:08:31 -050074 mFragments.dispatchResume();
75 processAllMessages();
Jason Monkaa573e92017-01-27 17:00:29 -050076
77 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
78 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +080079 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -050080
81 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
82 .getVisibility());
Evan Laird058c8ae2018-01-12 14:26:10 -050083 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.clock)
84 .getVisibility());
Jason Monkaa573e92017-01-27 17:00:29 -050085 }
86
87 @Test
88 public void testDisableSystemInfo() throws Exception {
Jason Monk28d5d222017-02-02 13:08:31 -050089 mFragments.dispatchResume();
90 processAllMessages();
Jason Monkaa573e92017-01-27 17:00:29 -050091
92 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
93 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +080094 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_SYSTEM_INFO, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -050095
96 assertEquals(View.INVISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
97 .getVisibility());
98
Charles Chenf3d295c2018-11-30 18:15:21 +080099 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -0500100
101 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area)
102 .getVisibility());
103 }
104
105 @Test
106 public void testDisableNotifications() throws Exception {
Jason Monk28d5d222017-02-02 13:08:31 -0500107 mFragments.dispatchResume();
108 processAllMessages();
Jason Monkaa573e92017-01-27 17:00:29 -0500109
110 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
111 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +0800112 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -0500113
114 Mockito.verify(mNotificationAreaInner).setVisibility(eq(View.INVISIBLE));
115
Charles Chenf3d295c2018-11-30 18:15:21 +0800116 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Jason Monkaa573e92017-01-27 17:00:29 -0500117
Jason Monk60033fc2017-03-24 11:26:35 -0400118 Mockito.verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE));
Jason Monkaa573e92017-01-27 17:00:29 -0500119 }
Evan Laird4b68e2f72018-03-29 18:21:48 -0400120
121 @Test
122 public void testDisableClock() throws Exception {
123 mFragments.dispatchResume();
124 processAllMessages();
125
126 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
127 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +0800128 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_CLOCK, 0, false);
Evan Laird4b68e2f72018-03-29 18:21:48 -0400129
Evan Laird74435e62018-05-04 11:58:30 -0400130 assertEquals(View.GONE, mFragment.getView().findViewById(R.id.clock).getVisibility());
Evan Laird4b68e2f72018-03-29 18:21:48 -0400131
Charles Chenf3d295c2018-11-30 18:15:21 +0800132 fragment.disable(DEFAULT_DISPLAY, 0, 0, false);
Evan Laird4b68e2f72018-03-29 18:21:48 -0400133
134 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.clock).getVisibility());
135 }
Lucas Dupin2e43cfc2018-11-12 14:07:18 -0800136
137 @Test
138 public void testOnDozingChanged() throws Exception {
139 mFragments.dispatchResume();
140 processAllMessages();
141
142 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment;
143 fragment.initNotificationIconArea(mMockNotificiationAreaController);
Charles Chenf3d295c2018-11-30 18:15:21 +0800144 fragment.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false);
Lucas Dupin2e43cfc2018-11-12 14:07:18 -0800145
146 Mockito.verify(mNotificationAreaInner).setVisibility(eq(View.INVISIBLE));
147
148 reset(mStatusBarStateController);
149 when(mStatusBarStateController.isDozing()).thenReturn(true);
150 fragment.onDozingChanged(true);
151
152 Mockito.verify(mStatusBarStateController).isDozing();
153 Mockito.verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE));
154 }
Jason Monkaa573e92017-01-27 17:00:29 -0500155}