blob: e4f181be857cf80962084c003263b2af7f08912b [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
14 * limitations under the License
15 */
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
Kazuki Takise56148392018-07-27 10:44:25 +090022import static org.mockito.Mockito.doReturn;
Wale Ogunwalecfca2582016-10-19 09:53:25 -070023import static org.mockito.Mockito.mock;
24
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;
29import android.graphics.Rect;
30import android.os.Bundle;
31import android.os.IBinder;
32import android.os.RemoteException;
Adrian Roos3150dbf2018-03-28 18:06:52 +020033import android.util.proto.ProtoOutputStream;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080034import android.view.Display;
Adrian Roos11c25582018-02-19 18:06:36 +010035import android.view.DisplayCutout;
Adrian Roos3150dbf2018-03-28 18:06:52 +020036import android.view.IWindow;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080037import android.view.IWindowManager;
38import android.view.KeyEvent;
39import android.view.WindowManager;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080040import android.view.animation.Animation;
41
42import com.android.internal.policy.IKeyguardDismissCallback;
43import com.android.internal.policy.IShortcutService;
Adrian Roose99bc052017-11-20 17:55:31 +010044import com.android.server.policy.WindowManagerPolicy;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080045
46import java.io.PrintWriter;
Adrian Roos3150dbf2018-03-28 18:06:52 +020047import java.util.function.Supplier;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080048
Wale Ogunwalecfca2582016-10-19 09:53:25 -070049class TestWindowManagerPolicy implements WindowManagerPolicy {
Wale Ogunwaleadde52e2016-07-16 13:11:55 -070050 private static final String TAG = "TestWindowManagerPolicy";
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070051
Adrian Roos3150dbf2018-03-28 18:06:52 +020052 private final Supplier<WindowManagerService> mWmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070053
Andrii Kulian4ede3e02017-01-12 11:52:31 -080054 int rotationToReport = 0;
Adrian Roos4163d622018-05-22 16:56:35 +020055 boolean keyguardShowingAndNotOccluded = false;
Andrii Kulian4ede3e02017-01-12 11:52:31 -080056
Jorim Jaggi9bafc712017-01-19 17:28:30 +010057 private Runnable mRunnableWhenAddingSplashScreen;
58
Adrian Roos3150dbf2018-03-28 18:06:52 +020059 public TestWindowManagerPolicy(Supplier<WindowManagerService> wmSupplier) {
Bryce Lee04ab3462017-04-10 15:06:33 -070060
Adrian Roos3150dbf2018-03-28 18:06:52 +020061 mWmSupplier = wmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070062 }
63
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070064 @Override
65 public void registerShortcutKey(long shortcutCode, IShortcutService shortcutKeyReceiver)
66 throws RemoteException {
67
68 }
69
70 @Override
71 public void init(Context context, IWindowManager windowManager,
72 WindowManagerFuncs windowManagerFuncs) {
73
74 }
75
76 @Override
77 public boolean isDefaultOrientationForced() {
78 return false;
79 }
80
81 @Override
82 public void setInitialDisplaySize(Display display, int width, int height, int density) {
83
84 }
85
86 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070087 public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp) {
88 return 0;
89 }
90
91 @Override
92 public boolean checkShowToOwnerOnly(WindowManager.LayoutParams attrs) {
93 return false;
94 }
95
96 @Override
Wale Ogunwalec0b0f932017-11-01 12:51:43 -070097 public void adjustWindowParamsLw(WindowState win, WindowManager.LayoutParams attrs,
98 boolean hasStatusBarServicePermission) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070099 }
100
101 @Override
102 public void adjustConfigurationLw(Configuration config, int keyboardPresence,
103 int navigationPresence) {
104
105 }
106
107 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700108 public int getMaxWallpaperLayer() {
109 return 0;
110 }
111
112 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800113 public int getNonDecorDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100114 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700115 return 0;
116 }
117
118 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800119 public int getNonDecorDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100120 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700121 return 0;
122 }
123
124 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800125 public int getConfigDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100126 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700127 return 0;
128 }
129
130 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800131 public int getConfigDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100132 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700133 return 0;
134 }
135
136 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700137 public boolean isKeyguardHostWindow(WindowManager.LayoutParams attrs) {
Andrii Kulian92c9a942017-10-10 00:41:41 -0700138 return attrs.type == TYPE_STATUS_BAR;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700139 }
140
141 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200142 public boolean canBeHiddenByKeyguardLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700143 return false;
144 }
145
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100146 /**
147 * Sets a runnable to run when adding a splash screen which gets executed after the window has
148 * been added but before returning the surface.
149 */
150 void setRunnableWhenAddingSplashScreen(Runnable r) {
151 mRunnableWhenAddingSplashScreen = r;
152 }
153
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700154 @Override
Jorim Jaggiba41f4b2016-12-14 17:43:07 -0800155 public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700156 CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon,
Andrii Kulianfb1bf692017-01-17 11:17:34 -0800157 int logo, int windowFlags, Configuration overrideConfig, int displayId) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100158 final com.android.server.wm.WindowState window;
159 final AppWindowToken atoken;
Adrian Roos3150dbf2018-03-28 18:06:52 +0200160 final WindowManagerService wm = mWmSupplier.get();
161 synchronized (wm.mWindowMap) {
162 atoken = wm.mRoot.getAppWindowToken(appToken);
Kazuki Takise56148392018-07-27 10:44:25 +0900163 IWindow iWindow = mock(IWindow.class);
164 doReturn(mock(IBinder.class)).when(iWindow).asBinder();
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100165 window = WindowTestsBase.createWindow(null, TYPE_APPLICATION_STARTING, atoken,
Adrian Roos3150dbf2018-03-28 18:06:52 +0200166 "Starting window", 0 /* ownerId */, false /* internalWindows */, wm,
Kazuki Takise56148392018-07-27 10:44:25 +0900167 mock(Session.class), iWindow);
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100168 atoken.startingWindow = window;
169 }
170 if (mRunnableWhenAddingSplashScreen != null) {
171 mRunnableWhenAddingSplashScreen.run();
172 mRunnableWhenAddingSplashScreen = null;
173 }
174 return () -> {
Adrian Roos3150dbf2018-03-28 18:06:52 +0200175 synchronized (wm.mWindowMap) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100176 atoken.removeChild(window);
177 atoken.startingWindow = null;
178 }
179 };
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700180 }
181
182 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700183 public int prepareAddWindowLw(WindowState win,
184 WindowManager.LayoutParams attrs) {
185 return 0;
186 }
187
188 @Override
189 public void removeWindowLw(WindowState win) {
190
191 }
192
193 @Override
194 public int selectAnimationLw(WindowState win, int transit) {
195 return 0;
196 }
197
198 @Override
199 public void selectRotationAnimationLw(int[] anim) {
200
201 }
202
203 @Override
204 public boolean validateRotationAnimationLw(int exitAnimId, int enterAnimId,
205 boolean forceDefault) {
206 return false;
207 }
208
209 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200210 public Animation createHiddenByKeyguardExit(boolean onWallpaper,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700211 boolean goingToNotificationShade) {
212 return null;
213 }
214
215 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200216 public Animation createKeyguardWallpaperExit(boolean goingToNotificationShade) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700217 return null;
218 }
219
220 @Override
221 public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
222 return 0;
223 }
224
225 @Override
226 public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) {
227 return 0;
228 }
229
230 @Override
231 public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event,
232 int policyFlags) {
233 return 0;
234 }
235
236 @Override
237 public KeyEvent dispatchUnhandledKey(WindowState win, KeyEvent event,
238 int policyFlags) {
239 return null;
240 }
241
242 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700243 public int getSystemDecorLayerLw() {
244 return 0;
245 }
246
247 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700248 public void beginPostLayoutPolicyLw(int displayWidth, int displayHeight) {
249
250 }
251
252 @Override
253 public void applyPostLayoutPolicyLw(WindowState win,
Jorim Jaggife762342016-10-13 14:33:27 +0200254 WindowManager.LayoutParams attrs, WindowState attached, WindowState imeTarget) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700255 }
256
257 @Override
258 public int finishPostLayoutPolicyLw() {
259 return 0;
260 }
261
262 @Override
263 public boolean allowAppAnimationsLw() {
264 return false;
265 }
266
267 @Override
268 public int focusChangedLw(WindowState lastFocus,
269 WindowState newFocus) {
270 return 0;
271 }
272
273 @Override
274 public void startedWakingUp() {
275
276 }
277
278 @Override
279 public void finishedWakingUp() {
280
281 }
282
283 @Override
284 public void startedGoingToSleep(int why) {
285
286 }
287
288 @Override
289 public void finishedGoingToSleep(int why) {
290
291 }
292
293 @Override
294 public void screenTurningOn(ScreenOnListener screenOnListener) {
295
296 }
297
298 @Override
299 public void screenTurnedOn() {
300
301 }
302
303 @Override
Jorim Jaggi51304d72017-05-17 17:25:32 +0200304 public void screenTurningOff(ScreenOffListener screenOffListener) {
305
306 }
307
308 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700309 public void screenTurnedOff() {
310
311 }
312
313 @Override
314 public boolean isScreenOn() {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100315 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700316 }
317
318 @Override
Adrian Roos7c894802017-07-19 12:25:34 +0200319 public boolean okToAnimate() {
Adrian Roose94c15c2017-05-09 13:17:54 -0700320 return true;
321 }
322
323 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700324 public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
325
326 }
327
328 @Override
329 public void notifyCameraLensCoverSwitchChanged(long whenNanos, boolean lensCovered) {
330
331 }
332
333 @Override
334 public void enableKeyguard(boolean enabled) {
335
336 }
337
338 @Override
339 public void exitKeyguardSecurely(OnKeyguardExitResult callback) {
340
341 }
342
343 @Override
344 public boolean isKeyguardLocked() {
Adrian Roos4163d622018-05-22 16:56:35 +0200345 return keyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700346 }
347
348 @Override
349 public boolean isKeyguardSecure(int userId) {
350 return false;
351 }
352
353 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200354 public boolean isKeyguardOccluded() {
355 return false;
356 }
357
358 @Override
359 public boolean isKeyguardTrustedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700360 return false;
361 }
362
363 @Override
364 public boolean isKeyguardShowingAndNotOccluded() {
Adrian Roos4163d622018-05-22 16:56:35 +0200365 return keyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700366 }
367
368 @Override
Siarhei Vishniakou35fbb312017-12-13 13:48:50 -0800369 public boolean inKeyguardRestrictedKeyInputMode() {
370 return false;
371 }
372
373 @Override
Lucas Dupinc80c67e2017-12-04 14:29:10 -0800374 public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback,
375 CharSequence message) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700376 }
377
378 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200379 public boolean isKeyguardDrawnLw() {
380 return false;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700381 }
382
383 @Override
Jorim Jaggi77e10432016-10-26 17:43:56 -0700384 public boolean isShowingDreamLw() {
385 return false;
386 }
387
388 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200389 public void onKeyguardOccludedChangedLw(boolean occluded) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700390 }
391
392 @Override
Andrii Kulianef5ce1c2018-03-20 19:27:24 -0700393 public int rotationForOrientationLw(int orientation, int lastRotation, boolean defaultDisplay) {
Andrii Kulian4ede3e02017-01-12 11:52:31 -0800394 return rotationToReport;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700395 }
396
397 @Override
Andrii Kuliana95bfff2017-03-30 19:00:41 -0700398 public boolean rotationHasCompatibleMetricsLw(int orientation, int rotation) {
399 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700400 }
401
402 @Override
403 public void setRotationLw(int rotation) {
404
405 }
406
407 @Override
408 public void setSafeMode(boolean safeMode) {
409
410 }
411
412 @Override
413 public void systemReady() {
414
415 }
416
417 @Override
418 public void systemBooted() {
419
420 }
421
422 @Override
423 public void showBootMessage(CharSequence msg, boolean always) {
424
425 }
426
427 @Override
428 public void hideBootMessages() {
429
430 }
431
432 @Override
433 public void userActivity() {
434
435 }
436
437 @Override
438 public void enableScreenAfterBoot() {
439
440 }
441
442 @Override
443 public void setCurrentOrientationLw(int newOrientation) {
444
445 }
446
447 @Override
448 public boolean performHapticFeedbackLw(WindowState win, int effectId,
449 boolean always) {
450 return false;
451 }
452
453 @Override
454 public void keepScreenOnStartedLw() {
455
456 }
457
458 @Override
459 public void keepScreenOnStoppedLw() {
460
461 }
462
463 @Override
464 public int getUserRotationMode() {
465 return 0;
466 }
467
468 @Override
469 public void setUserRotationMode(int mode,
470 int rotation) {
471
472 }
473
474 @Override
475 public int adjustSystemUiVisibilityLw(int visibility) {
476 return 0;
477 }
478
479 @Override
480 public boolean hasNavigationBar() {
481 return false;
482 }
483
484 @Override
485 public void lockNow(Bundle options) {
486
487 }
488
489 @Override
490 public void setLastInputMethodWindowLw(WindowState ime,
491 WindowState target) {
492
493 }
494
495 @Override
Winson Chungdff7a732017-12-11 12:17:06 -0800496 public void showRecentApps() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700497
498 }
499
500 @Override
501 public void showGlobalActions() {
502
503 }
504
505 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700506 public void setCurrentUserLw(int newUserId) {
507
508 }
509
510 @Override
Evan Rosky18396452016-07-27 15:19:37 -0700511 public void setSwitchingUser(boolean switching) {
512
513 }
514
515 @Override
Steven Timotiusaf03df62017-07-18 16:56:43 -0700516 public void writeToProto(ProtoOutputStream proto, long fieldId) {
517
518 }
519
520 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700521 public void dump(String prefix, PrintWriter writer, String[] args) {
522
523 }
524
525 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700526 public boolean isTopLevelWindow(int windowType) {
527 return false;
528 }
529
530 @Override
531 public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
532
533 }
534
535 @Override
536 public void getStableInsetsLw(int displayRotation, int displayWidth, int displayHeight,
Adrian Roos11c25582018-02-19 18:06:36 +0100537 DisplayCutout cutout, Rect outInsets) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700538
539 }
540
541 @Override
542 public boolean isNavBarForcedShownLw(WindowState win) {
543 return false;
544 }
545
Yohei Yukawad0a66b22018-01-10 13:19:54 -0800546 @NavigationBarPosition
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700547 @Override
Andrii Kulian3a1619d2017-07-07 14:38:09 -0700548 public int getNavBarPosition() {
549 return NAV_BAR_BOTTOM;
550 }
551
552 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700553 public void getNonDecorInsetsLw(int displayRotation, int displayWidth, int displayHeight,
Adrian Roos11c25582018-02-19 18:06:36 +0100554 DisplayCutout cutout, Rect outInsets) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700555
556 }
557
558 @Override
Matthew Ng62c78462018-04-09 14:43:21 -0700559 public boolean isDockSideAllowed(int dockSide, int originalDockSide, int displayWidth,
560 int displayHeight, int displayRotation) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700561 return false;
562 }
563
564 @Override
565 public void onConfigurationChanged() {
566
567 }
568
569 @Override
570 public boolean shouldRotateSeamlessly(int oldRotation, int newRotation) {
571 return false;
572 }
Brian Carlstrom7203d622016-09-21 01:00:36 -0700573
574 @Override
Winson Chungac52f282017-03-30 14:44:52 -0700575 public void setPipVisibilityLw(boolean visible) {
Brian Carlstrom7203d622016-09-21 01:00:36 -0700576
577 }
578
579 @Override
580 public void setRecentsVisibilityLw(boolean visible) {
581
Keun-young Park4136d2d2017-05-08 14:51:59 -0700582 }
583
584 @Override
Matthew Ng64543e62018-02-28 17:35:10 -0800585 public void setNavBarVirtualKeyHapticFeedbackEnabledLw(boolean enabled) {
586 }
587
588 @Override
Keun-young Park4136d2d2017-05-08 14:51:59 -0700589 public void onSystemUiStarted() {
590 }
591
592 @Override
593 public boolean canDismissBootAnimation() {
594 return true;
595 }
Phil Weaverd7551602018-02-15 15:01:04 -0800596
597 @Override
Yoshiaki Nakae1bdfc822017-09-15 15:24:34 +0900598 public void requestUserActivityNotification() {
599 }
Benjamin Franz3662b152018-01-16 17:23:44 +0000600
601 @Override
602 public void onLockTaskStateChangedLw(int lockTaskState) {
603 }
chaviw0e9fb132018-06-05 16:29:13 -0700604
605 @Override
606 public boolean setAodShowing(boolean aodShowing) {
607 return false;
608 }
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700609}