Home | History | Annotate | Download | only in phone
      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