blob: 7a075a26cb31d9ad2d063c595ad829df45d18d2b [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;
wilsonshihe8321942019-10-18 18:39:46 +080020import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE;
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;
Michael Wrighte3001042019-02-05 00:13:14 +000031import android.os.PowerManager.WakeReason;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080032import android.os.RemoteException;
Adrian Roos3150dbf2018-03-28 18:06:52 +020033import android.util.proto.ProtoOutputStream;
Adrian Roos3150dbf2018-03-28 18:06:52 +020034import android.view.IWindow;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080035import android.view.IWindowManager;
36import android.view.KeyEvent;
37import android.view.WindowManager;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080038import android.view.animation.Animation;
39
40import com.android.internal.policy.IKeyguardDismissCallback;
41import com.android.internal.policy.IShortcutService;
Adrian Roose99bc052017-11-20 17:55:31 +010042import com.android.server.policy.WindowManagerPolicy;
Garfield Tane3d37b52019-07-23 12:43:05 -070043import com.android.server.wm.WindowState.PowerManagerWrapper;
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 {
Adrian Roos3150dbf2018-03-28 18:06:52 +020049 private final Supplier<WindowManagerService> mWmSupplier;
Garfield Tane3d37b52019-07-23 12:43:05 -070050 private final PowerManagerWrapper mPowerManagerWrapper;
Wale Ogunwale51362492016-09-08 17:49:17 -070051
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +090052 int mRotationToReport = 0;
53 boolean mKeyguardShowingAndNotOccluded = false;
Adrian Roos019a52b2019-07-02 16:47:44 +020054 boolean mOkToAnimate = true;
Andrii Kulian4ede3e02017-01-12 11:52:31 -080055
Jorim Jaggi9bafc712017-01-19 17:28:30 +010056 private Runnable mRunnableWhenAddingSplashScreen;
57
Garfield Tane3d37b52019-07-23 12:43:05 -070058 TestWindowManagerPolicy(Supplier<WindowManagerService> wmSupplier,
59 PowerManagerWrapper powerManagerWrapper) {
Adrian Roos3150dbf2018-03-28 18:06:52 +020060 mWmSupplier = wmSupplier;
Garfield Tane3d37b52019-07-23 12:43:05 -070061 mPowerManagerWrapper = powerManagerWrapper;
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 {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070067 }
68
69 @Override
70 public void init(Context context, IWindowManager windowManager,
71 WindowManagerFuncs windowManagerFuncs) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070072 }
73
Riddle Hsu5ce4bb32018-07-18 16:11:30 +080074 public void setDefaultDisplay(DisplayContentInfo displayContentInfo) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070075 }
76
77 @Override
Charles Chen69543472020-02-07 12:05:28 +080078 public int checkAddPermission(int type, boolean isRoundedCornerOverlay, String packageName,
79 int[] outAppOp) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070080 return 0;
81 }
82
83 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070084 public void adjustConfigurationLw(Configuration config, int keyboardPresence,
85 int navigationPresence) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070086 }
87
88 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070089 public int getMaxWallpaperLayer() {
90 return 0;
91 }
92
93 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070094 public boolean isKeyguardHostWindow(WindowManager.LayoutParams attrs) {
wilsonshihe8321942019-10-18 18:39:46 +080095 return attrs.type == TYPE_NOTIFICATION_SHADE;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070096 }
97
98 @Override
Jorim Jaggife762342016-10-13 14:33:27 +020099 public boolean canBeHiddenByKeyguardLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700100 return false;
101 }
102
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100103 /**
104 * Sets a runnable to run when adding a splash screen which gets executed after the window has
105 * been added but before returning the surface.
106 */
107 void setRunnableWhenAddingSplashScreen(Runnable r) {
108 mRunnableWhenAddingSplashScreen = r;
109 }
110
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700111 @Override
Jorim Jaggiba41f4b2016-12-14 17:43:07 -0800112 public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700113 CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon,
Andrii Kulianfb1bf692017-01-17 11:17:34 -0800114 int logo, int windowFlags, Configuration overrideConfig, int displayId) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100115 final com.android.server.wm.WindowState window;
Garfield Tane8d84ab2019-10-11 09:49:40 -0700116 final ActivityRecord activity;
Adrian Roos3150dbf2018-03-28 18:06:52 +0200117 final WindowManagerService wm = mWmSupplier.get();
Wale Ogunwaledb485de2018-10-29 09:47:07 -0700118 synchronized (wm.mGlobalLock) {
Garfield Tane8d84ab2019-10-11 09:49:40 -0700119 activity = wm.mRoot.getActivityRecord(appToken);
Kazuki Takise56148392018-07-27 10:44:25 +0900120 IWindow iWindow = mock(IWindow.class);
121 doReturn(mock(IBinder.class)).when(iWindow).asBinder();
Garfield Tane8d84ab2019-10-11 09:49:40 -0700122 window = WindowTestsBase.createWindow(null, TYPE_APPLICATION_STARTING, activity,
Adrian Roos3150dbf2018-03-28 18:06:52 +0200123 "Starting window", 0 /* ownerId */, false /* internalWindows */, wm,
Garfield Tane3d37b52019-07-23 12:43:05 -0700124 mock(Session.class), iWindow, mPowerManagerWrapper);
Garfield Tane8d84ab2019-10-11 09:49:40 -0700125 activity.startingWindow = window;
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100126 }
127 if (mRunnableWhenAddingSplashScreen != null) {
128 mRunnableWhenAddingSplashScreen.run();
129 mRunnableWhenAddingSplashScreen = null;
130 }
131 return () -> {
Wale Ogunwaledb485de2018-10-29 09:47:07 -0700132 synchronized (wm.mGlobalLock) {
Garfield Tane8d84ab2019-10-11 09:49:40 -0700133 activity.removeChild(window);
134 activity.startingWindow = null;
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100135 }
136 };
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700137 }
138
139 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800140 public void setKeyguardCandidateLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700141 }
142
143 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200144 public Animation createHiddenByKeyguardExit(boolean onWallpaper,
Issei Suzuki5609ccb2019-06-13 15:04:08 +0200145 boolean goingToNotificationShade, boolean subtleAnimation) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700146 return null;
147 }
148
149 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200150 public Animation createKeyguardWallpaperExit(boolean goingToNotificationShade) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700151 return null;
152 }
153
154 @Override
155 public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
156 return 0;
157 }
158
159 @Override
Charles Chen4cc014e12019-01-28 16:17:16 +0800160 public int interceptMotionBeforeQueueingNonInteractive(int displayId, long whenNanos,
161 int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700162 return 0;
163 }
164
165 @Override
Vishnu Nair539334a2019-09-20 10:46:21 -0700166 public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
167 int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700168 return 0;
169 }
170
171 @Override
Vishnu Nair539334a2019-09-20 10:46:21 -0700172 public KeyEvent dispatchUnhandledKey(IBinder focusedToken, KeyEvent event, int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700173 return null;
174 }
175
176 @Override
Tiger Huang51c5a1d2018-12-11 20:24:51 +0800177 public void setTopFocusedDisplay(int displayId) {
178 }
179
180 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800181 public void applyKeyguardPolicyLw(WindowState win, WindowState imeTarget) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700182 }
183
184 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800185 public void setAllowLockscreenWhenOn(int displayId, boolean allow) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700186 }
187
188 @Override
Michael Wrighte3001042019-02-05 00:13:14 +0000189 public void startedWakingUp(@WakeReason int reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700190 }
191
192 @Override
Michael Wrighte3001042019-02-05 00:13:14 +0000193 public void finishedWakingUp(@WakeReason int reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700194 }
195
196 @Override
197 public void startedGoingToSleep(int why) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700198 }
199
200 @Override
201 public void finishedGoingToSleep(int why) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700202 }
203
204 @Override
205 public void screenTurningOn(ScreenOnListener screenOnListener) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700206 }
207
208 @Override
209 public void screenTurnedOn() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700210 }
211
212 @Override
Jorim Jaggi51304d72017-05-17 17:25:32 +0200213 public void screenTurningOff(ScreenOffListener screenOffListener) {
Jorim Jaggi51304d72017-05-17 17:25:32 +0200214 }
215
216 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700217 public void screenTurnedOff() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700218 }
219
220 @Override
221 public boolean isScreenOn() {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100222 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700223 }
224
225 @Override
Adrian Roos7c894802017-07-19 12:25:34 +0200226 public boolean okToAnimate() {
Adrian Roos019a52b2019-07-02 16:47:44 +0200227 return mOkToAnimate;
Adrian Roose94c15c2017-05-09 13:17:54 -0700228 }
229
230 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700231 public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700232 }
233
234 @Override
235 public void notifyCameraLensCoverSwitchChanged(long whenNanos, boolean lensCovered) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700236 }
237
238 @Override
239 public void enableKeyguard(boolean enabled) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700240 }
241
242 @Override
243 public void exitKeyguardSecurely(OnKeyguardExitResult callback) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700244 }
245
246 @Override
247 public boolean isKeyguardLocked() {
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +0900248 return mKeyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700249 }
250
251 @Override
252 public boolean isKeyguardSecure(int userId) {
253 return false;
254 }
255
256 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200257 public boolean isKeyguardOccluded() {
258 return false;
259 }
260
261 @Override
262 public boolean isKeyguardTrustedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700263 return false;
264 }
265
266 @Override
wilsonshihe8321942019-10-18 18:39:46 +0800267 public boolean isKeyguardShowing() {
268 return mKeyguardShowingAndNotOccluded;
269 }
270
271 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700272 public boolean isKeyguardShowingAndNotOccluded() {
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +0900273 return mKeyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700274 }
275
276 @Override
Siarhei Vishniakou35fbb312017-12-13 13:48:50 -0800277 public boolean inKeyguardRestrictedKeyInputMode() {
278 return false;
279 }
280
281 @Override
Lucas Dupinc80c67e2017-12-04 14:29:10 -0800282 public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback,
283 CharSequence message) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700284 }
285
286 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200287 public boolean isKeyguardDrawnLw() {
288 return false;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700289 }
290
291 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200292 public void onKeyguardOccludedChangedLw(boolean occluded) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700293 }
294
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700295 public void setSafeMode(boolean safeMode) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700296 }
297
298 @Override
299 public void systemReady() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700300 }
301
302 @Override
303 public void systemBooted() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700304 }
305
306 @Override
307 public void showBootMessage(CharSequence msg, boolean always) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700308 }
309
310 @Override
311 public void hideBootMessages() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700312 }
313
314 @Override
315 public void userActivity() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700316 }
317
318 @Override
319 public void enableScreenAfterBoot() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700320 }
321
322 @Override
Arthur Hunga4c52062019-02-19 11:31:44 +0800323 public boolean performHapticFeedback(int uid, String packageName, int effectId,
324 boolean always, String reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700325 return false;
326 }
327
328 @Override
329 public void keepScreenOnStartedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700330 }
331
332 @Override
333 public void keepScreenOnStoppedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700334 }
335
336 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700337 public boolean hasNavigationBar() {
338 return false;
339 }
340
341 @Override
342 public void lockNow(Bundle options) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700343 }
344
345 @Override
Winson Chungdff7a732017-12-11 12:17:06 -0800346 public void showRecentApps() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700347 }
348
349 @Override
350 public void showGlobalActions() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700351 }
352
353 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800354 public boolean isUserSetupComplete() {
355 return false;
356 }
357
358 @Override
359 public int getUiMode() {
360 return 0;
361 }
362
363 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700364 public void setCurrentUserLw(int newUserId) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700365 }
366
367 @Override
Evan Rosky18396452016-07-27 15:19:37 -0700368 public void setSwitchingUser(boolean switching) {
Evan Rosky18396452016-07-27 15:19:37 -0700369 }
370
371 @Override
Jeffrey Huangcb782852019-12-05 11:28:11 -0800372 public void dumpDebug(ProtoOutputStream proto, long fieldId) {
Steven Timotiusaf03df62017-07-18 16:56:43 -0700373 }
374
375 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700376 public void dump(String prefix, PrintWriter writer, String[] args) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700377 }
378
379 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700380 public boolean isTopLevelWindow(int windowType) {
381 return false;
382 }
383
384 @Override
385 public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700386 }
387
388 @Override
Winson Chungac52f282017-03-30 14:44:52 -0700389 public void setPipVisibilityLw(boolean visible) {
Brian Carlstrom7203d622016-09-21 01:00:36 -0700390 }
391
392 @Override
393 public void setRecentsVisibilityLw(boolean visible) {
Keun-young Park4136d2d2017-05-08 14:51:59 -0700394 }
395
396 @Override
Matthew Ng64543e62018-02-28 17:35:10 -0800397 public void setNavBarVirtualKeyHapticFeedbackEnabledLw(boolean enabled) {
398 }
399
400 @Override
Keun-young Park4136d2d2017-05-08 14:51:59 -0700401 public void onSystemUiStarted() {
402 }
403
404 @Override
405 public boolean canDismissBootAnimation() {
406 return true;
407 }
Phil Weaverd7551602018-02-15 15:01:04 -0800408
409 @Override
chaviw0e9fb132018-06-05 16:29:13 -0700410 public boolean setAodShowing(boolean aodShowing) {
411 return false;
412 }
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700413}