blob: ba81bd1c3b12ded823181602a2a57bce5547d405 [file] [log] [blame]
Wale Ogunwaleb699ce02016-07-18 12:05:30 -07001/*
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
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070014 * limitations under the License.
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070015 */
16
17package com.android.server.wm;
18
Jorim Jaggi9bafc712017-01-19 17:28:30 +010019import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
Andrii Kulian92c9a942017-10-10 00:41:41 -070020import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
Tarandeep Singhe1cfcf42017-07-10 18:50:00 -070021
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +090022import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
23import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
Wale Ogunwalecfca2582016-10-19 09:53:25 -070024
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080025import android.annotation.Nullable;
26import android.content.Context;
27import android.content.res.CompatibilityInfo;
28import android.content.res.Configuration;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080029import android.os.Bundle;
30import android.os.IBinder;
31import android.os.RemoteException;
Adrian Roos3150dbf2018-03-28 18:06:52 +020032import android.util.proto.ProtoOutputStream;
Adrian Roos3150dbf2018-03-28 18:06:52 +020033import android.view.IWindow;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080034import android.view.IWindowManager;
35import android.view.KeyEvent;
36import android.view.WindowManager;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080037import android.view.animation.Animation;
38
39import com.android.internal.policy.IKeyguardDismissCallback;
40import com.android.internal.policy.IShortcutService;
Adrian Roose99bc052017-11-20 17:55:31 +010041import com.android.server.policy.WindowManagerPolicy;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080042
43import java.io.PrintWriter;
Adrian Roos3150dbf2018-03-28 18:06:52 +020044import java.util.function.Supplier;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080045
Wale Ogunwalecfca2582016-10-19 09:53:25 -070046class TestWindowManagerPolicy implements WindowManagerPolicy {
Adrian Roos3150dbf2018-03-28 18:06:52 +020047 private final Supplier<WindowManagerService> mWmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070048
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +090049 int mRotationToReport = 0;
50 boolean mKeyguardShowingAndNotOccluded = false;
Andrii Kulian4ede3e02017-01-12 11:52:31 -080051
Jorim Jaggi9bafc712017-01-19 17:28:30 +010052 private Runnable mRunnableWhenAddingSplashScreen;
53
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070054 TestWindowManagerPolicy(Supplier<WindowManagerService> wmSupplier) {
Adrian Roos3150dbf2018-03-28 18:06:52 +020055 mWmSupplier = wmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070056 }
57
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070058 @Override
59 public void registerShortcutKey(long shortcutCode, IShortcutService shortcutKeyReceiver)
60 throws RemoteException {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070061 }
62
63 @Override
64 public void init(Context context, IWindowManager windowManager,
65 WindowManagerFuncs windowManagerFuncs) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070066 }
67
Riddle Hsu5ce4bb32018-07-18 16:11:30 +080068 public void setDefaultDisplay(DisplayContentInfo displayContentInfo) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070069 }
70
71 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070072 public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp) {
73 return 0;
74 }
75
76 @Override
77 public boolean checkShowToOwnerOnly(WindowManager.LayoutParams attrs) {
78 return false;
79 }
80
81 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070082 public void adjustConfigurationLw(Configuration config, int keyboardPresence,
83 int navigationPresence) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070084 }
85
86 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070087 public int getMaxWallpaperLayer() {
88 return 0;
89 }
90
91 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070092 public boolean isKeyguardHostWindow(WindowManager.LayoutParams attrs) {
Andrii Kulian92c9a942017-10-10 00:41:41 -070093 return attrs.type == TYPE_STATUS_BAR;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070094 }
95
96 @Override
Jorim Jaggife762342016-10-13 14:33:27 +020097 public boolean canBeHiddenByKeyguardLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070098 return false;
99 }
100
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100101 /**
102 * Sets a runnable to run when adding a splash screen which gets executed after the window has
103 * been added but before returning the surface.
104 */
105 void setRunnableWhenAddingSplashScreen(Runnable r) {
106 mRunnableWhenAddingSplashScreen = r;
107 }
108
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700109 @Override
Jorim Jaggiba41f4b2016-12-14 17:43:07 -0800110 public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700111 CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon,
Andrii Kulianfb1bf692017-01-17 11:17:34 -0800112 int logo, int windowFlags, Configuration overrideConfig, int displayId) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100113 final com.android.server.wm.WindowState window;
114 final AppWindowToken atoken;
Adrian Roos3150dbf2018-03-28 18:06:52 +0200115 final WindowManagerService wm = mWmSupplier.get();
Wale Ogunwaledb485de2018-10-29 09:47:07 -0700116 synchronized (wm.mGlobalLock) {
Adrian Roos3150dbf2018-03-28 18:06:52 +0200117 atoken = wm.mRoot.getAppWindowToken(appToken);
Kazuki Takise56148392018-07-27 10:44:25 +0900118 IWindow iWindow = mock(IWindow.class);
119 doReturn(mock(IBinder.class)).when(iWindow).asBinder();
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100120 window = WindowTestsBase.createWindow(null, TYPE_APPLICATION_STARTING, atoken,
Adrian Roos3150dbf2018-03-28 18:06:52 +0200121 "Starting window", 0 /* ownerId */, false /* internalWindows */, wm,
Kazuki Takise56148392018-07-27 10:44:25 +0900122 mock(Session.class), iWindow);
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100123 atoken.startingWindow = window;
124 }
125 if (mRunnableWhenAddingSplashScreen != null) {
126 mRunnableWhenAddingSplashScreen.run();
127 mRunnableWhenAddingSplashScreen = null;
128 }
129 return () -> {
Wale Ogunwaledb485de2018-10-29 09:47:07 -0700130 synchronized (wm.mGlobalLock) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100131 atoken.removeChild(window);
132 atoken.startingWindow = null;
133 }
134 };
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700135 }
136
137 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800138 public void setKeyguardCandidateLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700139 }
140
141 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200142 public Animation createHiddenByKeyguardExit(boolean onWallpaper,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700143 boolean goingToNotificationShade) {
144 return null;
145 }
146
147 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200148 public Animation createKeyguardWallpaperExit(boolean goingToNotificationShade) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700149 return null;
150 }
151
152 @Override
153 public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
154 return 0;
155 }
156
157 @Override
158 public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) {
159 return 0;
160 }
161
162 @Override
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700163 public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700164 return 0;
165 }
166
167 @Override
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700168 public KeyEvent dispatchUnhandledKey(WindowState win, KeyEvent event, int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700169 return null;
170 }
171
172 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800173 public void applyKeyguardPolicyLw(WindowState win, WindowState imeTarget) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700174 }
175
176 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800177 public void setAllowLockscreenWhenOn(int displayId, boolean allow) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700178 }
179
180 @Override
181 public void startedWakingUp() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700182 }
183
184 @Override
185 public void finishedWakingUp() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700186 }
187
188 @Override
189 public void startedGoingToSleep(int why) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700190 }
191
192 @Override
193 public void finishedGoingToSleep(int why) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700194 }
195
196 @Override
197 public void screenTurningOn(ScreenOnListener screenOnListener) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700198 }
199
200 @Override
201 public void screenTurnedOn() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700202 }
203
204 @Override
Jorim Jaggi51304d72017-05-17 17:25:32 +0200205 public void screenTurningOff(ScreenOffListener screenOffListener) {
Jorim Jaggi51304d72017-05-17 17:25:32 +0200206 }
207
208 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700209 public void screenTurnedOff() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700210 }
211
212 @Override
213 public boolean isScreenOn() {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100214 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700215 }
216
217 @Override
Adrian Roos7c894802017-07-19 12:25:34 +0200218 public boolean okToAnimate() {
Adrian Roose94c15c2017-05-09 13:17:54 -0700219 return true;
220 }
221
222 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700223 public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700224 }
225
226 @Override
227 public void notifyCameraLensCoverSwitchChanged(long whenNanos, boolean lensCovered) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700228 }
229
230 @Override
231 public void enableKeyguard(boolean enabled) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700232 }
233
234 @Override
235 public void exitKeyguardSecurely(OnKeyguardExitResult callback) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700236 }
237
238 @Override
239 public boolean isKeyguardLocked() {
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +0900240 return mKeyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700241 }
242
243 @Override
244 public boolean isKeyguardSecure(int userId) {
245 return false;
246 }
247
248 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200249 public boolean isKeyguardOccluded() {
250 return false;
251 }
252
253 @Override
254 public boolean isKeyguardTrustedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700255 return false;
256 }
257
258 @Override
259 public boolean isKeyguardShowingAndNotOccluded() {
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +0900260 return mKeyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700261 }
262
263 @Override
Siarhei Vishniakou35fbb312017-12-13 13:48:50 -0800264 public boolean inKeyguardRestrictedKeyInputMode() {
265 return false;
266 }
267
268 @Override
Lucas Dupinc80c67e2017-12-04 14:29:10 -0800269 public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback,
270 CharSequence message) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700271 }
272
273 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200274 public boolean isKeyguardDrawnLw() {
275 return false;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700276 }
277
278 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200279 public void onKeyguardOccludedChangedLw(boolean occluded) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700280 }
281
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700282 public void setSafeMode(boolean safeMode) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700283 }
284
285 @Override
286 public void systemReady() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700287 }
288
289 @Override
290 public void systemBooted() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700291 }
292
293 @Override
294 public void showBootMessage(CharSequence msg, boolean always) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700295 }
296
297 @Override
298 public void hideBootMessages() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700299 }
300
301 @Override
302 public void userActivity() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700303 }
304
305 @Override
306 public void enableScreenAfterBoot() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700307 }
308
309 @Override
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700310 public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always,
311 String reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700312 return false;
313 }
314
315 @Override
316 public void keepScreenOnStartedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700317 }
318
319 @Override
320 public void keepScreenOnStoppedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700321 }
322
323 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700324 public boolean hasNavigationBar() {
325 return false;
326 }
327
328 @Override
329 public void lockNow(Bundle options) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700330 }
331
332 @Override
Winson Chungdff7a732017-12-11 12:17:06 -0800333 public void showRecentApps() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700334 }
335
336 @Override
337 public void showGlobalActions() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700338 }
339
340 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800341 public boolean isUserSetupComplete() {
342 return false;
343 }
344
345 @Override
346 public int getUiMode() {
347 return 0;
348 }
349
350 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700351 public void setCurrentUserLw(int newUserId) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700352 }
353
354 @Override
Evan Rosky18396452016-07-27 15:19:37 -0700355 public void setSwitchingUser(boolean switching) {
Evan Rosky18396452016-07-27 15:19:37 -0700356 }
357
358 @Override
Steven Timotiusaf03df62017-07-18 16:56:43 -0700359 public void writeToProto(ProtoOutputStream proto, long fieldId) {
Steven Timotiusaf03df62017-07-18 16:56:43 -0700360 }
361
362 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700363 public void dump(String prefix, PrintWriter writer, String[] args) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700364 }
365
366 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700367 public boolean isTopLevelWindow(int windowType) {
368 return false;
369 }
370
371 @Override
372 public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700373 }
374
375 @Override
Winson Chungac52f282017-03-30 14:44:52 -0700376 public void setPipVisibilityLw(boolean visible) {
Brian Carlstrom7203d622016-09-21 01:00:36 -0700377 }
378
379 @Override
380 public void setRecentsVisibilityLw(boolean visible) {
Keun-young Park4136d2d2017-05-08 14:51:59 -0700381 }
382
383 @Override
Matthew Ng64543e62018-02-28 17:35:10 -0800384 public void setNavBarVirtualKeyHapticFeedbackEnabledLw(boolean enabled) {
385 }
386
387 @Override
Keun-young Park4136d2d2017-05-08 14:51:59 -0700388 public void onSystemUiStarted() {
389 }
390
391 @Override
392 public boolean canDismissBootAnimation() {
393 return true;
394 }
Phil Weaverd7551602018-02-15 15:01:04 -0800395
396 @Override
Yoshiaki Nakae1bdfc822017-09-15 15:24:34 +0900397 public void requestUserActivityNotification() {
398 }
Benjamin Franz3662b152018-01-16 17:23:44 +0000399
400 @Override
chaviw0e9fb132018-06-05 16:29:13 -0700401 public boolean setAodShowing(boolean aodShowing) {
402 return false;
403 }
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700404}