blob: babd452475d4c8e80d5d0657c3c765147941fadf [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 Monk25a52b62017-05-23 10:42:59 -040025import android.support.test.filters.SmallTest;
Jason Monk340b0e52017-03-08 14:57:56 -050026import android.testing.AndroidTestingRunner;
Jason Monk91e587e2017-04-13 13:41:23 -040027import android.testing.LeakCheck.Tracker;
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050028import android.testing.TestableLooper.RunWithLooper;
Jason Monkaa573e92017-01-27 17:00:29 -050029import android.view.Display;
Jason Monk865246d2017-01-19 08:27:01 -050030import android.view.WindowManager;
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050031import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
Jason Monk865246d2017-01-19 08:27:01 -050032
Jason Monk9424af72018-12-19 14:17:26 -050033import com.android.internal.logging.MetricsLogger;
Jason Monkaa573e92017-01-27 17:00:29 -050034import com.android.systemui.Dependency;
Jason Monk340b0e52017-03-08 14:57:56 -050035import com.android.systemui.SysuiBaseFragmentTest;
Jason Monk9424af72018-12-19 14:17:26 -050036import com.android.systemui.assist.AssistManager;
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050037import com.android.systemui.recents.OverviewProxyService;
Jason Monk49fa0162017-01-11 09:21:56 -050038import com.android.systemui.recents.Recents;
39import com.android.systemui.stackdivider.Divider;
40import com.android.systemui.statusbar.CommandQueue;
Jason Monk91e587e2017-04-13 13:41:23 -040041import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
Jason Monk9424af72018-12-19 14:17:26 -050042import com.android.systemui.statusbar.policy.DeviceProvisionedController;
Jason Monk91e587e2017-04-13 13:41:23 -040043
Jason Monk49fa0162017-01-11 09:21:56 -050044import org.junit.Before;
Jason Monk865246d2017-01-19 08:27:01 -050045import org.junit.Test;
Jason Monk28d5d222017-02-02 13:08:31 -050046import org.junit.runner.RunWith;
Jason Monk49fa0162017-01-11 09:21:56 -050047
Jason Monk340b0e52017-03-08 14:57:56 -050048@RunWith(AndroidTestingRunner.class)
Aaron Heuckroth96cd93f2018-11-20 11:14:40 -050049@RunWithLooper()
Jason Monk25a52b62017-05-23 10:42:59 -040050@SmallTest
Jason Monk340b0e52017-03-08 14:57:56 -050051public class NavigationBarFragmentTest extends SysuiBaseFragmentTest {
Jason Monk49fa0162017-01-11 09:21:56 -050052
Jason Monk9424af72018-12-19 14:17:26 -050053 private OverviewProxyService mOverviewProxyService =
54 mDependency.injectMockDependency(OverviewProxyService.class);
55 private AccessibilityManagerWrapper mAccessibilityWrapper =
56 new AccessibilityManagerWrapper(mContext) {
57 Tracker mTracker = mLeakCheck.getTracker("accessibility_manager");
58
59 @Override
60 public void addCallback(AccessibilityServicesStateChangeListener listener) {
61 mTracker.getLeakInfo(listener).addAllocation(new Throwable());
62 }
63
64 @Override
65 public void removeCallback(AccessibilityServicesStateChangeListener listener) {
66 mTracker.getLeakInfo(listener).clearAllocations();
67 }
68 };
69
Jason Monk49fa0162017-01-11 09:21:56 -050070 public NavigationBarFragmentTest() {
71 super(NavigationBarFragment.class);
72 }
73
Siarhei Vishniakou6ad0e392017-06-02 17:20:34 -070074 protected void createRootView() {
75 mView = new NavigationBarFrame(mContext);
76 }
77
Jason Monk49fa0162017-01-11 09:21:56 -050078 @Before
79 public void setup() {
Jason Monk340b0e52017-03-08 14:57:56 -050080 mSysuiContext.putComponent(CommandQueue.class, mock(CommandQueue.class));
81 mSysuiContext.putComponent(StatusBar.class, mock(StatusBar.class));
82 mSysuiContext.putComponent(Recents.class, mock(Recents.class));
83 mSysuiContext.putComponent(Divider.class, mock(Divider.class));
Jason Monkde850bb2017-02-01 19:26:30 -050084 injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
Jason Monkaa573e92017-01-27 17:00:29 -050085 WindowManager windowManager = mock(WindowManager.class);
86 Display defaultDisplay = mContext.getSystemService(WindowManager.class).getDefaultDisplay();
87 when(windowManager.getDefaultDisplay()).thenReturn(
88 defaultDisplay);
89 mContext.addMockSystemService(Context.WINDOW_SERVICE, windowManager);
Jason Monk91e587e2017-04-13 13:41:23 -040090
Jason Monk9424af72018-12-19 14:17:26 -050091 mDependency.injectTestDependency(Dependency.BG_LOOPER, Looper.getMainLooper());
92 mDependency.injectTestDependency(AccessibilityManagerWrapper.class, mAccessibilityWrapper);
Jason Monk49fa0162017-01-11 09:21:56 -050093 }
94
Jason Monk865246d2017-01-19 08:27:01 -050095 @Test
96 public void testHomeLongPress() {
Jason Monk865246d2017-01-19 08:27:01 -050097 NavigationBarFragment navigationBarFragment = (NavigationBarFragment) mFragment;
98
Jason Monk28d5d222017-02-02 13:08:31 -050099 mFragments.dispatchResume();
100 processAllMessages();
Jason Monk865246d2017-01-19 08:27:01 -0500101 navigationBarFragment.onHomeLongClick(navigationBarFragment.getView());
102 }
103
Jason Monk9424af72018-12-19 14:17:26 -0500104 @Override
105 protected Fragment instantiate(Context context, String className, Bundle arguments) {
106 DeviceProvisionedController deviceProvisionedController =
Jason Monkcfa61ff2018-12-21 13:15:26 -0500107 mock(DeviceProvisionedController.class);
Jason Monk9424af72018-12-19 14:17:26 -0500108 assertNotNull(mAccessibilityWrapper);
109 return new NavigationBarFragment(mAccessibilityWrapper,
110 deviceProvisionedController,
111 new MetricsLogger(),
112 new AssistManager(deviceProvisionedController, mContext),
113 mOverviewProxyService);
114 }
Jason Monk49fa0162017-01-11 09:21:56 -0500115}