blob: 772bfb49ed4f2643b73f690281c12b1ddb4afddb [file] [log] [blame]
Jorim Jaggi5a108c22016-10-13 14:33:27 +02001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
15 */
16
17package com.android.server.wm;
18
19import static junit.framework.Assert.assertTrue;
20import static org.mockito.Mockito.any;
21import static org.mockito.Mockito.doAnswer;
Jorim Jaggi5a108c22016-10-13 14:33:27 +020022
23import android.app.ActivityManagerInternal;
24import android.content.Context;
25import android.platform.test.annotations.Presubmit;
26import android.support.test.InstrumentationRegistry;
27import android.support.test.filters.SmallTest;
28import android.support.test.runner.AndroidJUnit4;
Jorim Jaggi5a108c22016-10-13 14:33:27 +020029
30import com.android.server.LocalServices;
31
32import org.junit.After;
33import org.junit.Before;
34import org.junit.Test;
35import org.junit.runner.RunWith;
36import org.mockito.Mock;
37import org.mockito.MockitoAnnotations;
38import org.mockito.invocation.InvocationOnMock;
39
40/**
41 * Test class for {@link AppTransition}.
42 *
Jorim Jaggi46a26a82016-12-15 17:45:41 -080043 * runtest frameworks-services -c com.android.server.wm.UnknownAppVisibilityControllerTest
Jorim Jaggi5a108c22016-10-13 14:33:27 +020044 */
45@SmallTest
Jorim Jaggi46a26a82016-12-15 17:45:41 -080046@Presubmit
Jorim Jaggi5a108c22016-10-13 14:33:27 +020047@RunWith(AndroidJUnit4.class)
Jorim Jaggi9bafc712017-01-19 17:28:30 +010048public class UnknownAppVisibilityControllerTest extends WindowTestsBase {
Jorim Jaggi5a108c22016-10-13 14:33:27 +020049
50 private WindowManagerService mWm;
Jorim Jaggi5a108c22016-10-13 14:33:27 +020051
52 @Before
53 public void setUp() throws Exception {
Jorim Jaggi9bafc712017-01-19 17:28:30 +010054 super.setUp();
Jorim Jaggi5a108c22016-10-13 14:33:27 +020055 final Context context = InstrumentationRegistry.getTargetContext();
Jorim Jaggi5a108c22016-10-13 14:33:27 +020056 doAnswer((InvocationOnMock invocationOnMock) -> {
57 invocationOnMock.getArgumentAt(0, Runnable.class).run();
58 return null;
Jorim Jaggi9bafc712017-01-19 17:28:30 +010059 }).when(sMockAm).notifyKeyguardFlagsChanged(any());
Jorim Jaggi5a108c22016-10-13 14:33:27 +020060 mWm = TestWindowManagerPolicy.getWindowManagerService(context);
61 }
62
63 @After
64 public void tearDown() throws Exception {
65 LocalServices.removeServiceForTest(ActivityManagerInternal.class);
66 }
67
68 @Test
69 public void testFlow() throws Exception {
70 AppWindowToken token = createAppToken();
71 mWm.mUnknownAppVisibilityController.notifyLaunched(token);
72 mWm.mUnknownAppVisibilityController.notifyAppResumedFinished(token);
73 mWm.mUnknownAppVisibilityController.notifyRelayouted(token);
74
75 // Make sure our handler processed the message.
76 Thread.sleep(100);
77 assertTrue(mWm.mUnknownAppVisibilityController.allResolved());
78 }
79
80 @Test
81 public void testMultiple() throws Exception {
82 AppWindowToken token1 = createAppToken();
83 AppWindowToken token2 = createAppToken();
84 mWm.mUnknownAppVisibilityController.notifyLaunched(token1);
85 mWm.mUnknownAppVisibilityController.notifyAppResumedFinished(token1);
86 mWm.mUnknownAppVisibilityController.notifyLaunched(token2);
87 mWm.mUnknownAppVisibilityController.notifyRelayouted(token1);
88 mWm.mUnknownAppVisibilityController.notifyAppResumedFinished(token2);
89 mWm.mUnknownAppVisibilityController.notifyRelayouted(token2);
90
91 // Make sure our handler processed the message.
92 Thread.sleep(100);
93 assertTrue(mWm.mUnknownAppVisibilityController.allResolved());
94 }
95
96 @Test
97 public void testClear() throws Exception {
98 AppWindowToken token = createAppToken();
99 mWm.mUnknownAppVisibilityController.notifyLaunched(token);
100 mWm.mUnknownAppVisibilityController.clear();;
101 assertTrue(mWm.mUnknownAppVisibilityController.allResolved());
102 }
103
104 @Test
105 public void testAppRemoved() throws Exception {
106 AppWindowToken token = createAppToken();
107 mWm.mUnknownAppVisibilityController.notifyLaunched(token);
108 mWm.mUnknownAppVisibilityController.appRemoved(token);
109 assertTrue(mWm.mUnknownAppVisibilityController.allResolved());
110 }
111
112 private AppWindowToken createAppToken() {
Wale Ogunwale26c0dfe2016-12-14 14:42:30 -0800113 return new AppWindowToken(mWm, null, false, mWm.getDefaultDisplayContentLocked());
Jorim Jaggi5a108c22016-10-13 14:33:27 +0200114 }
115}