blob: 2cb326eb72696633f12c950a462efe0736a5ec18 [file] [log] [blame]
Jason Monk88529052016-11-04 13:29:58 -04001/*
2 * Copyright (C) 2016 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.qs;
16
Jason Monk28d5d222017-02-02 13:08:31 -050017import static org.junit.Assert.assertEquals;
Jason Monk64b214e2017-03-27 13:40:59 -040018import static org.junit.Assert.assertTrue;
Jason Monk88529052016-11-04 13:29:58 -040019import static org.mockito.Mockito.mock;
Jason Monk88529052016-11-04 13:29:58 -040020
Jason Monk48f85be2018-12-19 15:16:44 -050021import android.app.Fragment;
Jason Monka716bac2018-12-05 15:48:21 -050022import android.content.Context;
Jason Monk48f85be2018-12-19 15:16:44 -050023import android.os.Bundle;
Jason Monk5d577202018-12-26 15:43:06 -050024import android.os.Handler;
Jason Monk28d5d222017-02-02 13:08:31 -050025import android.os.Looper;
Jason Monka716bac2018-12-05 15:48:21 -050026import android.support.test.filters.SmallTest;
27import android.testing.AndroidTestingRunner;
28import android.testing.LayoutInflaterBuilder;
29import android.testing.TestableLooper;
30import android.testing.TestableLooper.RunWithLooper;
31import android.view.View;
32import android.widget.FrameLayout;
Jason Monk28d5d222017-02-02 13:08:31 -050033
Jason Monk8c09ac72017-03-16 11:53:40 -040034import com.android.internal.logging.MetricsLogger;
Jason Monke5b770e2017-03-03 21:49:29 -050035import com.android.keyguard.CarrierText;
Jason Monk9c7844c2017-01-18 15:21:53 -050036import com.android.systemui.Dependency;
Jason Monk89377bb2016-12-08 15:29:34 -050037import com.android.systemui.R;
Jason Monkea54e8a2018-12-20 10:01:48 -050038import com.android.systemui.SystemUIFactory;
Jason Monk340b0e52017-03-08 14:57:56 -050039import com.android.systemui.SysuiBaseFragmentTest;
Jason Monk5d577202018-12-26 15:43:06 -050040import com.android.systemui.qs.tileimpl.QSFactoryImpl;
Jason Monk30b64fa2018-12-27 13:19:34 -050041import com.android.systemui.shared.plugins.PluginManager;
Jason Monk88529052016-11-04 13:29:58 -040042import com.android.systemui.statusbar.phone.StatusBarIconController;
Jason Monk1660a272017-04-28 15:53:59 -040043import com.android.systemui.statusbar.policy.Clock;
Jason Monkeeff95b2018-12-21 12:54:37 -050044import com.android.systemui.statusbar.policy.ConfigurationController;
Jason Monk48f85be2018-12-19 15:16:44 -050045import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
Jason Monk88529052016-11-04 13:29:58 -040046import com.android.systemui.statusbar.policy.UserSwitcherController;
Jason Monk30b64fa2018-12-27 13:19:34 -050047import com.android.systemui.tuner.TunerService;
Jason Monkea54e8a2018-12-20 10:01:48 -050048import com.android.systemui.util.InjectionInflationController;
Jason Monk88529052016-11-04 13:29:58 -040049
Jason Monk9c7844c2017-01-18 15:21:53 -050050import org.junit.Before;
Geoffrey Pitsch351a3212017-05-22 15:20:20 -040051import org.junit.Ignore;
Jason Monk88529052016-11-04 13:29:58 -040052import org.junit.Test;
53import org.junit.runner.RunWith;
54
Jason Monk340b0e52017-03-08 14:57:56 -050055@RunWith(AndroidTestingRunner.class)
Jason Monka716bac2018-12-05 15:48:21 -050056@RunWithLooper
Jason Monkfba8faf2017-05-23 10:42:59 -040057@SmallTest
Alison Cichowlas5d7d9592018-07-17 15:30:28 -040058@Ignore
Jason Monk340b0e52017-03-08 14:57:56 -050059public class QSFragmentTest extends SysuiBaseFragmentTest {
Jason Monk88529052016-11-04 13:29:58 -040060
Jason Monk8c09ac72017-03-16 11:53:40 -040061 private MetricsLogger mMockMetricsLogger;
62
Jason Monk88529052016-11-04 13:29:58 -040063 public QSFragmentTest() {
64 super(QSFragment.class);
Jason Monk48f85be2018-12-19 15:16:44 -050065 injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
Jason Monk88529052016-11-04 13:29:58 -040066 }
67
Jason Monk9c7844c2017-01-18 15:21:53 -050068 @Before
Alison Cichowlas5d7d9592018-07-17 15:30:28 -040069 @Ignore("failing")
Jason Monk9c7844c2017-01-18 15:21:53 -050070 public void addLeakCheckDependencies() {
Jason Monk8c09ac72017-03-16 11:53:40 -040071 mMockMetricsLogger = mDependency.injectMockDependency(MetricsLogger.class);
Jason Monkaa573e92017-01-27 17:00:29 -050072 mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE,
73 new LayoutInflaterBuilder(mContext)
74 .replace("com.android.systemui.statusbar.policy.SplitClockView",
75 FrameLayout.class)
76 .replace("TextClock", View.class)
Jason Monke5b770e2017-03-03 21:49:29 -050077 .replace(CarrierText.class, View.class)
Jason Monk1660a272017-04-28 15:53:59 -040078 .replace(Clock.class, View.class)
Jason Monkaa573e92017-01-27 17:00:29 -050079 .build());
80
Jason Monk340b0e52017-03-08 14:57:56 -050081 mDependency.injectTestDependency(Dependency.BG_LOOPER,
82 TestableLooper.get(this).getLooper());
83 mDependency.injectMockDependency(UserSwitcherController.class);
Jason Monk9c7844c2017-01-18 15:21:53 -050084 }
85
Jason Monk88529052016-11-04 13:29:58 -040086 @Test
Alison Cichowlas5d7d9592018-07-17 15:30:28 -040087 @Ignore("failing")
Jason Monk88529052016-11-04 13:29:58 -040088 public void testListening() {
Jason Monk28d5d222017-02-02 13:08:31 -050089 assertEquals(Looper.myLooper(), Looper.getMainLooper());
Jason Monk88529052016-11-04 13:29:58 -040090 QSFragment qs = (QSFragment) mFragment;
Jason Monk28d5d222017-02-02 13:08:31 -050091 mFragments.dispatchResume();
92 processAllMessages();
Jason Monk5d577202018-12-26 15:43:06 -050093 QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
Jason Monk30b64fa2018-12-27 13:19:34 -050094 mock(QSFactoryImpl.class), new Handler(), Looper.myLooper(),
95 mock(PluginManager.class), mock(TunerService.class));
Jason Monk88529052016-11-04 13:29:58 -040096 qs.setHost(host);
Jason Monk88529052016-11-04 13:29:58 -040097
98 qs.setListening(true);
Jason Monk28d5d222017-02-02 13:08:31 -050099 processAllMessages();
Jason Monk88529052016-11-04 13:29:58 -0400100
101 qs.setListening(false);
Jason Monk28d5d222017-02-02 13:08:31 -0500102 processAllMessages();
Jason Monk88529052016-11-04 13:29:58 -0400103
Jason Monk89377bb2016-12-08 15:29:34 -0500104 // Manually push header through detach so it can handle standard cleanup it does on
105 // removed from window.
106 ((QuickStatusBarHeader) qs.getView().findViewById(R.id.header)).onDetachedFromWindow();
107
Jason Monk88529052016-11-04 13:29:58 -0400108 host.destroy();
Jason Monk28d5d222017-02-02 13:08:31 -0500109 processAllMessages();
Jason Monk88529052016-11-04 13:29:58 -0400110 }
Jason Monk64b214e2017-03-27 13:40:59 -0400111
112 @Test
Alison Cichowlas5d7d9592018-07-17 15:30:28 -0400113 @Ignore("failing")
Jason Monk64b214e2017-03-27 13:40:59 -0400114 public void testSaveState() {
115 QSFragment qs = (QSFragment) mFragment;
116
117 mFragments.dispatchResume();
118 processAllMessages();
119
120 qs.setListening(true);
121 qs.setExpanded(true);
122 processAllMessages();
123 recreateFragment();
124 processAllMessages();
125
126 // Get the reference to the new fragment.
127 qs = (QSFragment) mFragment;
128 assertTrue(qs.isListening());
129 assertTrue(qs.isExpanded());
130 }
Jason Monk48f85be2018-12-19 15:16:44 -0500131
132 @Override
133 protected Fragment instantiate(Context context, String className, Bundle arguments) {
Jason Monkeeff95b2018-12-21 12:54:37 -0500134 return new QSFragment(
135 new RemoteInputQuickSettingsDisabler(context, mock(ConfigurationController.class)),
Jason Monk8966d992018-12-20 14:16:29 -0500136 new InjectionInflationController(SystemUIFactory.getInstance().getRootComponent()),
Jason Monk5d577202018-12-26 15:43:06 -0500137 context,
138 mock(QSTileHost.class));
Jason Monk48f85be2018-12-19 15:16:44 -0500139 }
Jason Monk88529052016-11-04 13:29:58 -0400140}