1 /* 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 15 package com.android.systemui.statusbar.phone; 16 17 import static org.junit.Assert.assertEquals; 18 import static org.mockito.Matchers.eq; 19 import static org.mockito.Mockito.atLeast; 20 import static org.mockito.Mockito.mock; 21 import static org.mockito.Mockito.when; 22 23 import android.app.StatusBarManager; 24 import android.support.test.filters.SmallTest; 25 import android.view.View; 26 import android.view.ViewPropertyAnimator; 27 28 import com.android.systemui.R; 29 import android.testing.AndroidTestingRunner; 30 31 import com.android.systemui.SysuiBaseFragmentTest; 32 import com.android.systemui.statusbar.CommandQueue; 33 import com.android.systemui.tuner.TunerService; 34 import android.testing.TestableLooper.RunWithLooper; 35 36 import org.junit.Before; 37 import org.junit.runner.RunWith; 38 import org.junit.Test; 39 import org.mockito.Mockito; 40 41 @RunWith(AndroidTestingRunner.class) 42 @RunWithLooper(setAsMainLooper = true) 43 @SmallTest 44 public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { 45 46 private NotificationIconAreaController mMockNotificiationAreaController; 47 private View mNotificationAreaInner; 48 49 public CollapsedStatusBarFragmentTest() { 50 super(CollapsedStatusBarFragment.class); 51 } 52 53 @Before 54 public void setup() { 55 mSysuiContext.putComponent(CommandQueue.class, mock(CommandQueue.class)); 56 mSysuiContext.putComponent(StatusBar.class, mock(StatusBar.class)); 57 mSysuiContext.putComponent(TunerService.class, mock(TunerService.class)); 58 injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES); 59 mMockNotificiationAreaController = mock(NotificationIconAreaController.class); 60 mNotificationAreaInner = mock(View.class); 61 when(mNotificationAreaInner.animate()).thenReturn(mock(ViewPropertyAnimator.class)); 62 when(mMockNotificiationAreaController.getNotificationInnerAreaView()).thenReturn( 63 mNotificationAreaInner); 64 } 65 66 @Test 67 public void testDisableNone() throws Exception { 68 mFragments.dispatchResume(); 69 processAllMessages(); 70 71 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment; 72 fragment.initNotificationIconArea(mMockNotificiationAreaController); 73 fragment.disable(0, 0, false); 74 75 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area) 76 .getVisibility()); 77 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.clock) 78 .getVisibility()); 79 } 80 81 @Test 82 public void testDisableSystemInfo() throws Exception { 83 mFragments.dispatchResume(); 84 processAllMessages(); 85 86 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment; 87 fragment.initNotificationIconArea(mMockNotificiationAreaController); 88 fragment.disable(StatusBarManager.DISABLE_SYSTEM_INFO, 0, false); 89 90 assertEquals(View.INVISIBLE, mFragment.getView().findViewById(R.id.system_icon_area) 91 .getVisibility()); 92 93 fragment.disable(0, 0, false); 94 95 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.system_icon_area) 96 .getVisibility()); 97 } 98 99 @Test 100 public void testDisableNotifications() throws Exception { 101 mFragments.dispatchResume(); 102 processAllMessages(); 103 104 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment; 105 fragment.initNotificationIconArea(mMockNotificiationAreaController); 106 fragment.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS, 0, false); 107 108 Mockito.verify(mNotificationAreaInner).setVisibility(eq(View.INVISIBLE)); 109 110 fragment.disable(0, 0, false); 111 112 Mockito.verify(mNotificationAreaInner, atLeast(1)).setVisibility(eq(View.VISIBLE)); 113 } 114 115 @Test 116 public void testDisableClock() throws Exception { 117 mFragments.dispatchResume(); 118 processAllMessages(); 119 120 CollapsedStatusBarFragment fragment = (CollapsedStatusBarFragment) mFragment; 121 fragment.initNotificationIconArea(mMockNotificiationAreaController); 122 fragment.disable(StatusBarManager.DISABLE_CLOCK, 0, false); 123 124 assertEquals(View.GONE, mFragment.getView().findViewById(R.id.clock).getVisibility()); 125 126 fragment.disable(0, 0, false); 127 128 assertEquals(View.VISIBLE, mFragment.getView().findViewById(R.id.clock).getVisibility()); 129 } 130 } 131