blob: 765b3d5957c4ab424d9d15e031ad4564f572d90b [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
Wale Ogunwalecfca2582016-10-19 09:53:25 -070022import static org.mockito.Mockito.mock;
23
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080024import android.annotation.Nullable;
25import android.content.Context;
26import android.content.res.CompatibilityInfo;
27import android.content.res.Configuration;
28import android.graphics.Rect;
29import android.os.Bundle;
30import android.os.IBinder;
31import android.os.RemoteException;
Adrian Roos3150dbf2018-03-28 18:06:52 +020032import android.util.proto.ProtoOutputStream;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080033import android.view.Display;
Adrian Roos11c25582018-02-19 18:06:36 +010034import android.view.DisplayCutout;
Adrian Roos3150dbf2018-03-28 18:06:52 +020035import android.view.IWindow;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080036import android.view.IWindowManager;
37import android.view.KeyEvent;
38import android.view.WindowManager;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080039import android.view.animation.Animation;
40
41import com.android.internal.policy.IKeyguardDismissCallback;
42import com.android.internal.policy.IShortcutService;
Adrian Roose99bc052017-11-20 17:55:31 +010043import com.android.server.policy.WindowManagerPolicy;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080044
45import java.io.PrintWriter;
Adrian Roos3150dbf2018-03-28 18:06:52 +020046import java.util.function.Supplier;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080047
Wale Ogunwalecfca2582016-10-19 09:53:25 -070048class TestWindowManagerPolicy implements WindowManagerPolicy {
Wale Ogunwaleadde52e2016-07-16 13:11:55 -070049 private static final String TAG = "TestWindowManagerPolicy";
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070050
Adrian Roos3150dbf2018-03-28 18:06:52 +020051 private final Supplier<WindowManagerService> mWmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070052
Andrii Kulian4ede3e02017-01-12 11:52:31 -080053 int rotationToReport = 0;
54
Jorim Jaggi9bafc712017-01-19 17:28:30 +010055 private Runnable mRunnableWhenAddingSplashScreen;
56
Adrian Roos3150dbf2018-03-28 18:06:52 +020057 public TestWindowManagerPolicy(Supplier<WindowManagerService> wmSupplier) {
Bryce Lee04ab3462017-04-10 15:06:33 -070058
Adrian Roos3150dbf2018-03-28 18:06:52 +020059 mWmSupplier = wmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070060 }
61
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070062 @Override
63 public void registerShortcutKey(long shortcutCode, IShortcutService shortcutKeyReceiver)
64 throws RemoteException {
65
66 }
67
68 @Override
69 public void init(Context context, IWindowManager windowManager,
70 WindowManagerFuncs windowManagerFuncs) {
71
72 }
73
74 @Override
75 public boolean isDefaultOrientationForced() {
76 return false;
77 }
78
79 @Override
80 public void setInitialDisplaySize(Display display, int width, int height, int density) {
81
82 }
83
84 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070085 public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp) {
86 return 0;
87 }
88
89 @Override
90 public boolean checkShowToOwnerOnly(WindowManager.LayoutParams attrs) {
91 return false;
92 }
93
94 @Override
Wale Ogunwalec0b0f932017-11-01 12:51:43 -070095 public void adjustWindowParamsLw(WindowState win, WindowManager.LayoutParams attrs,
96 boolean hasStatusBarServicePermission) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070097 }
98
99 @Override
100 public void adjustConfigurationLw(Configuration config, int keyboardPresence,
101 int navigationPresence) {
102
103 }
104
105 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700106 public int getMaxWallpaperLayer() {
107 return 0;
108 }
109
110 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800111 public int getNonDecorDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100112 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700113 return 0;
114 }
115
116 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800117 public int getNonDecorDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100118 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700119 return 0;
120 }
121
122 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800123 public int getConfigDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100124 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700125 return 0;
126 }
127
128 @Override
Andrii Kuliandb8e1062016-11-15 18:30:27 -0800129 public int getConfigDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode,
Adrian Roos11c25582018-02-19 18:06:36 +0100130 int displayId, DisplayCutout displayCutout) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700131 return 0;
132 }
133
134 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700135 public boolean isKeyguardHostWindow(WindowManager.LayoutParams attrs) {
Andrii Kulian92c9a942017-10-10 00:41:41 -0700136 return attrs.type == TYPE_STATUS_BAR;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700137 }
138
139 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200140 public boolean canBeHiddenByKeyguardLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700141 return false;
142 }
143
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100144 /**
145 * Sets a runnable to run when adding a splash screen which gets executed after the window has
146 * been added but before returning the surface.
147 */
148 void setRunnableWhenAddingSplashScreen(Runnable r) {
149 mRunnableWhenAddingSplashScreen = r;
150 }
151
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700152 @Override
Jorim Jaggiba41f4b2016-12-14 17:43:07 -0800153 public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700154 CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon,
Andrii Kulianfb1bf692017-01-17 11:17:34 -0800155 int logo, int windowFlags, Configuration overrideConfig, int displayId) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100156 final com.android.server.wm.WindowState window;
157 final AppWindowToken atoken;
Adrian Roos3150dbf2018-03-28 18:06:52 +0200158 final WindowManagerService wm = mWmSupplier.get();
159 synchronized (wm.mWindowMap) {
160 atoken = wm.mRoot.getAppWindowToken(appToken);
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100161 window = WindowTestsBase.createWindow(null, TYPE_APPLICATION_STARTING, atoken,
Adrian Roos3150dbf2018-03-28 18:06:52 +0200162 "Starting window", 0 /* ownerId */, false /* internalWindows */, wm,
163 mock(Session.class), mock(IWindow.class));
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100164 atoken.startingWindow = window;
165 }
166 if (mRunnableWhenAddingSplashScreen != null) {
167 mRunnableWhenAddingSplashScreen.run();
168 mRunnableWhenAddingSplashScreen = null;
169 }
170 return () -> {
Adrian Roos3150dbf2018-03-28 18:06:52 +0200171 synchronized (wm.mWindowMap) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100172 atoken.removeChild(window);
173 atoken.startingWindow = null;
174 }
175 };
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700176 }
177
178 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700179 public int prepareAddWindowLw(WindowState win,
180 WindowManager.LayoutParams attrs) {
181 return 0;
182 }
183
184 @Override
185 public void removeWindowLw(WindowState win) {
186
187 }
188
189 @Override
190 public int selectAnimationLw(WindowState win, int transit) {
191 return 0;
192 }
193
194 @Override
195 public void selectRotationAnimationLw(int[] anim) {
196
197 }
198
199 @Override
200 public boolean validateRotationAnimationLw(int exitAnimId, int enterAnimId,
201 boolean forceDefault) {
202 return false;
203 }
204
205 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200206 public Animation createHiddenByKeyguardExit(boolean onWallpaper,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700207 boolean goingToNotificationShade) {
208 return null;
209 }
210
211 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200212 public Animation createKeyguardWallpaperExit(boolean goingToNotificationShade) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700213 return null;
214 }
215
216 @Override
217 public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
218 return 0;
219 }
220
221 @Override
222 public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) {
223 return 0;
224 }
225
226 @Override
227 public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event,
228 int policyFlags) {
229 return 0;
230 }
231
232 @Override
233 public KeyEvent dispatchUnhandledKey(WindowState win, KeyEvent event,
234 int policyFlags) {
235 return null;
236 }
237
238 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700239 public int getSystemDecorLayerLw() {
240 return 0;
241 }
242
243 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700244 public void beginPostLayoutPolicyLw(int displayWidth, int displayHeight) {
245
246 }
247
248 @Override
249 public void applyPostLayoutPolicyLw(WindowState win,
Jorim Jaggife762342016-10-13 14:33:27 +0200250 WindowManager.LayoutParams attrs, WindowState attached, WindowState imeTarget) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700251 }
252
253 @Override
254 public int finishPostLayoutPolicyLw() {
255 return 0;
256 }
257
258 @Override
259 public boolean allowAppAnimationsLw() {
260 return false;
261 }
262
263 @Override
264 public int focusChangedLw(WindowState lastFocus,
265 WindowState newFocus) {
266 return 0;
267 }
268
269 @Override
270 public void startedWakingUp() {
271
272 }
273
274 @Override
275 public void finishedWakingUp() {
276
277 }
278
279 @Override
280 public void startedGoingToSleep(int why) {
281
282 }
283
284 @Override
285 public void finishedGoingToSleep(int why) {
286
287 }
288
289 @Override
290 public void screenTurningOn(ScreenOnListener screenOnListener) {
291
292 }
293
294 @Override
295 public void screenTurnedOn() {
296
297 }
298
299 @Override
Jorim Jaggi51304d72017-05-17 17:25:32 +0200300 public void screenTurningOff(ScreenOffListener screenOffListener) {
301
302 }
303
304 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700305 public void screenTurnedOff() {
306
307 }
308
309 @Override
310 public boolean isScreenOn() {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100311 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700312 }
313
314 @Override
Adrian Roos7c894802017-07-19 12:25:34 +0200315 public boolean okToAnimate() {
Adrian Roose94c15c2017-05-09 13:17:54 -0700316 return true;
317 }
318
319 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700320 public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
321
322 }
323
324 @Override
325 public void notifyCameraLensCoverSwitchChanged(long whenNanos, boolean lensCovered) {
326
327 }
328
329 @Override
330 public void enableKeyguard(boolean enabled) {
331
332 }
333
334 @Override
335 public void exitKeyguardSecurely(OnKeyguardExitResult callback) {
336
337 }
338
339 @Override
340 public boolean isKeyguardLocked() {
341 return false;
342 }
343
344 @Override
345 public boolean isKeyguardSecure(int userId) {
346 return false;
347 }
348
349 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200350 public boolean isKeyguardOccluded() {
351 return false;
352 }
353
354 @Override
355 public boolean isKeyguardTrustedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700356 return false;
357 }
358
359 @Override
360 public boolean isKeyguardShowingAndNotOccluded() {
361 return false;
362 }
363
364 @Override
Siarhei Vishniakou35fbb312017-12-13 13:48:50 -0800365 public boolean inKeyguardRestrictedKeyInputMode() {
366 return false;
367 }
368
369 @Override
Lucas Dupinc80c67e2017-12-04 14:29:10 -0800370 public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback,
371 CharSequence message) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700372 }
373
374 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200375 public boolean isKeyguardDrawnLw() {
376 return false;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700377 }
378
379 @Override
Jorim Jaggi77e10432016-10-26 17:43:56 -0700380 public boolean isShowingDreamLw() {
381 return false;
382 }
383
384 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200385 public void onKeyguardOccludedChangedLw(boolean occluded) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700386 }
387
388 @Override
Andrii Kulianef5ce1c2018-03-20 19:27:24 -0700389 public int rotationForOrientationLw(int orientation, int lastRotation, boolean defaultDisplay) {
Andrii Kulian4ede3e02017-01-12 11:52:31 -0800390 return rotationToReport;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700391 }
392
393 @Override
Andrii Kuliana95bfff2017-03-30 19:00:41 -0700394 public boolean rotationHasCompatibleMetricsLw(int orientation, int rotation) {
395 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700396 }
397
398 @Override
399 public void setRotationLw(int rotation) {
400
401 }
402
403 @Override
404 public void setSafeMode(boolean safeMode) {
405
406 }
407
408 @Override
409 public void systemReady() {
410
411 }
412
413 @Override
414 public void systemBooted() {
415
416 }
417
418 @Override
419 public void showBootMessage(CharSequence msg, boolean always) {
420
421 }
422
423 @Override
424 public void hideBootMessages() {
425
426 }
427
428 @Override
429 public void userActivity() {
430
431 }
432
433 @Override
434 public void enableScreenAfterBoot() {
435
436 }
437
438 @Override
439 public void setCurrentOrientationLw(int newOrientation) {
440
441 }
442
443 @Override
444 public boolean performHapticFeedbackLw(WindowState win, int effectId,
445 boolean always) {
446 return false;
447 }
448
449 @Override
450 public void keepScreenOnStartedLw() {
451
452 }
453
454 @Override
455 public void keepScreenOnStoppedLw() {
456
457 }
458
459 @Override
460 public int getUserRotationMode() {
461 return 0;
462 }
463
464 @Override
465 public void setUserRotationMode(int mode,
466 int rotation) {
467
468 }
469
470 @Override
471 public int adjustSystemUiVisibilityLw(int visibility) {
472 return 0;
473 }
474
475 @Override
476 public boolean hasNavigationBar() {
477 return false;
478 }
479
480 @Override
481 public void lockNow(Bundle options) {
482
483 }
484
485 @Override
486 public void setLastInputMethodWindowLw(WindowState ime,
487 WindowState target) {
488
489 }
490
491 @Override
Winson Chungdff7a732017-12-11 12:17:06 -0800492 public void showRecentApps() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700493
494 }
495
496 @Override
497 public void showGlobalActions() {
498
499 }
500
501 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700502 public void setCurrentUserLw(int newUserId) {
503
504 }
505
506 @Override
Evan Rosky18396452016-07-27 15:19:37 -0700507 public void setSwitchingUser(boolean switching) {
508
509 }
510
511 @Override
Steven Timotiusaf03df62017-07-18 16:56:43 -0700512 public void writeToProto(ProtoOutputStream proto, long fieldId) {
513
514 }
515
516 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700517 public void dump(String prefix, PrintWriter writer, String[] args) {
518
519 }
520
521 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700522 public boolean isTopLevelWindow(int windowType) {
523 return false;
524 }
525
526 @Override
527 public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
528
529 }
530
531 @Override
532 public void getStableInsetsLw(int displayRotation, int displayWidth, int displayHeight,
Adrian Roos11c25582018-02-19 18:06:36 +0100533 DisplayCutout cutout, Rect outInsets) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700534
535 }
536
537 @Override
538 public boolean isNavBarForcedShownLw(WindowState win) {
539 return false;
540 }
541
Yohei Yukawad0a66b22018-01-10 13:19:54 -0800542 @NavigationBarPosition
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700543 @Override
Andrii Kulian3a1619d2017-07-07 14:38:09 -0700544 public int getNavBarPosition() {
545 return NAV_BAR_BOTTOM;
546 }
547
548 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700549 public void getNonDecorInsetsLw(int displayRotation, int displayWidth, int displayHeight,
Adrian Roos11c25582018-02-19 18:06:36 +0100550 DisplayCutout cutout, Rect outInsets) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700551
552 }
553
554 @Override
Matthew Ng62c78462018-04-09 14:43:21 -0700555 public boolean isDockSideAllowed(int dockSide, int originalDockSide, int displayWidth,
556 int displayHeight, int displayRotation) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700557 return false;
558 }
559
560 @Override
561 public void onConfigurationChanged() {
562
563 }
564
565 @Override
566 public boolean shouldRotateSeamlessly(int oldRotation, int newRotation) {
567 return false;
568 }
Brian Carlstrom7203d622016-09-21 01:00:36 -0700569
570 @Override
Winson Chungac52f282017-03-30 14:44:52 -0700571 public void setPipVisibilityLw(boolean visible) {
Brian Carlstrom7203d622016-09-21 01:00:36 -0700572
573 }
574
575 @Override
576 public void setRecentsVisibilityLw(boolean visible) {
577
Keun-young Park4136d2d2017-05-08 14:51:59 -0700578 }
579
580 @Override
Matthew Ng64543e62018-02-28 17:35:10 -0800581 public void setNavBarVirtualKeyHapticFeedbackEnabledLw(boolean enabled) {
582 }
583
584 @Override
Keun-young Park4136d2d2017-05-08 14:51:59 -0700585 public void onSystemUiStarted() {
586 }
587
588 @Override
589 public boolean canDismissBootAnimation() {
590 return true;
591 }
Phil Weaverd7551602018-02-15 15:01:04 -0800592
593 @Override
Yoshiaki Nakae1bdfc822017-09-15 15:24:34 +0900594 public void requestUserActivityNotification() {
595 }
Benjamin Franz3662b152018-01-16 17:23:44 +0000596
597 @Override
598 public void onLockTaskStateChangedLw(int lockTaskState) {
599 }
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700600}