blob: 6a0d61dc13c97ace988c93008800f574166e8ef6 [file] [log] [blame]
Jason Monk49fa0162017-01-11 09:21:56 -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
Jason Monk9424af72018-12-19 14:17:26 -050017import static org.junit.Assert.assertNotNull;
Jason Monk49fa0162017-01-11 09:21:56 -050018import static org.mockito.Mockito.mock;
Jason Monkaa573e92017-01-27 17:00:29 -050019import static org.mockito.Mockito.when;
Jason Monk49fa0162017-01-11 09:21:56 -050020
Jason Monk9424af72018-12-19 14:17:26 -050021import android.app.Fragment;
Jason Monk865246d2017-01-19 08:27:01 -050022import android.content.Context;
Jason Monk9424af72018-12-19 14:17:26 -050023import android.os.Bundle;
Jason Monkaa573e92017-01-27 17:00:29 -050024import android.os.Looper;
Jason Monk340b0e52017-03-08 14:57:56 -050025import android.testing.AndroidTestingRunner;
Jason Monk91e587e2017-04-13 13:41:23 -040026import android.testing.LeakCheck.Tracker;
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050027import android.testing.TestableLooper.RunWithLooper;
Jason Monkaa573e92017-01-27 17:00:29 -050028import android.view.Display;
Jason Monk865246d2017-01-19 08:27:01 -050029import android.view.WindowManager;
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050030import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
Jason Monk865246d2017-01-19 08:27:01 -050031
Brett Chabot84151d92019-02-27 15:37:59 -080032import androidx.test.filters.SmallTest;
33
Jason Monk9424af72018-12-19 14:17:26 -050034import com.android.internal.logging.MetricsLogger;
Jason Monkaa573e92017-01-27 17:00:29 -050035import com.android.systemui.Dependency;
Jason Monk340b0e52017-03-08 14:57:56 -050036import com.android.systemui.SysuiBaseFragmentTest;
Jason Monk9424af72018-12-19 14:17:26 -050037import com.android.systemui.assist.AssistManager;
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050038import com.android.systemui.recents.OverviewProxyService;
Jason Monk49fa0162017-01-11 09:21:56 -050039import com.android.systemui.recents.Recents;
40import com.android.systemui.stackdivider.Divider;
41import com.android.systemui.statusbar.CommandQueue;
Jason Monk91e587e2017-04-13 13:41:23 -040042import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
Jason Monk9424af72018-12-19 14:17:26 -050043import com.android.systemui.statusbar.policy.DeviceProvisionedController;
Jason Monk91e587e2017-04-13 13:41:23 -040044
Jason Monk49fa0162017-01-11 09:21:56 -050045import org.junit.Before;
Jason Monk865246d2017-01-19 08:27:01 -050046import org.junit.Test;
Jason Monk28d5d222017-02-02 13:08:31 -050047import org.junit.runner.RunWith;
Jason Monk49fa0162017-01-11 09:21:56 -050048
Jason Monk340b0e52017-03-08 14:57:56 -050049@RunWith(AndroidTestingRunner.class)
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050050@RunWithLooper()
Jason Monk25a52b62017-05-23 10:42:59 -040051@SmallTest
Jason Monk340b0e52017-03-08 14:57:56 -050052public class NavigationBarFragmentTest extends SysuiBaseFragmentTest {
Jason Monk49fa0162017-01-11 09:21:56 -050053
Jason Monk9424af72018-12-19 14:17:26 -050054 private OverviewProxyService mOverviewProxyService =
55 mDependency.injectMockDependency(OverviewProxyService.class);
56 private AccessibilityManagerWrapper mAccessibilityWrapper =
57 new AccessibilityManagerWrapper(mContext) {
58 Tracker mTracker = mLeakCheck.getTracker("accessibility_manager");
59
60 @Override
61 public void addCallback(AccessibilityServicesStateChangeListener listener) {
62 mTracker.getLeakInfo(listener).addAllocation(new Throwable());
63 }
64
65 @Override
66 public void removeCallback(AccessibilityServicesStateChangeListener listener) {
67 mTracker.getLeakInfo(listener).clearAllocations();
68 }
69 };
70
Jason Monk49fa0162017-01-11 09:21:56 -050071 public NavigationBarFragmentTest() {
72 super(NavigationBarFragment.class);
73 }
74
Siarhei Vishniakou6ad0e392017-06-02 17:20:34 -070075 protected void createRootView() {
76 mView = new NavigationBarFrame(mContext);
77 }
78
Jason Monk49fa0162017-01-11 09:21:56 -050079 @Before
80 public void setup() {
Jason Monk340b0e52017-03-08 14:57:56 -050081 mSysuiContext.putComponent(CommandQueue.class, mock(CommandQueue.class));
82 mSysuiContext.putComponent(StatusBar.class, mock(StatusBar.class));
83 mSysuiContext.putComponent(Recents.class, mock(Recents.class));
84 mSysuiContext.putComponent(Divider.class, mock(Divider.class));
Jason Monkde850bb2017-02-01 19:26:30 -050085 injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
Jason Monkaa573e92017-01-27 17:00:29 -050086 WindowManager windowManager = mock(WindowManager.class);
87 Display defaultDisplay = mContext.getSystemService(WindowManager.class).getDefaultDisplay();
88 when(windowManager.getDefaultDisplay()).thenReturn(
89 defaultDisplay);
90 mContext.addMockSystemService(Context.WINDOW_SERVICE, windowManager);
Jason Monk91e587e2017-04-13 13:41:23 -040091
Jason Monk9424af72018-12-19 14:17:26 -050092 mDependency.injectTestDependency(Dependency.BG_LOOPER, Looper.getMainLooper());
93 mDependency.injectTestDependency(AccessibilityManagerWrapper.class, mAccessibilityWrapper);
Jason Monk49fa0162017-01-11 09:21:56 -050094 }
95
Jason Monk865246d2017-01-19 08:27:01 -050096 @Test
97 public void testHomeLongPress() {
Jason Monk865246d2017-01-19 08:27:01 -050098 NavigationBarFragment navigationBarFragment = (NavigationBarFragment) mFragment;
99
Jason Monk28d5d222017-02-02 13:08:31 -0500100 mFragments.dispatchResume();
101 processAllMessages();
Jason Monk865246d2017-01-19 08:27:01 -0500102 navigationBarFragment.onHomeLongClick(navigationBarFragment.getView());
103 }
104
Jason Monk9424af72018-12-19 14:17:26 -0500105 @Override
106 protected Fragment instantiate(Context context, String className, Bundle arguments) {
107 DeviceProvisionedController deviceProvisionedController =
Jason Monkcfa61ff2018-12-21 13:15:26 -0500108 mock(DeviceProvisionedController.class);
Jason Monk9424af72018-12-19 14:17:26 -0500109 assertNotNull(mAccessibilityWrapper);
110 return new NavigationBarFragment(mAccessibilityWrapper,
111 deviceProvisionedController,
112 new MetricsLogger(),
113 new AssistManager(deviceProvisionedController, mContext),
114 mOverviewProxyService);
115 }
Jason Monk49fa0162017-01-11 09:21:56 -0500116}