blob: c3561f4bf6ab454ac06cafc4a8d052c54a0af2fc [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;
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;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080043
44import java.io.PrintWriter;
Adrian Roos3150dbf2018-03-28 18:06:52 +020045import java.util.function.Supplier;
Jorim Jaggiba41f4b2016-12-14 17:43:07 -080046
Wale Ogunwalecfca2582016-10-19 09:53:25 -070047class TestWindowManagerPolicy implements WindowManagerPolicy {
Adrian Roos3150dbf2018-03-28 18:06:52 +020048 private final Supplier<WindowManagerService> mWmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070049
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +090050 int mRotationToReport = 0;
51 boolean mKeyguardShowingAndNotOccluded = false;
Andrii Kulian4ede3e02017-01-12 11:52:31 -080052
Jorim Jaggi9bafc712017-01-19 17:28:30 +010053 private Runnable mRunnableWhenAddingSplashScreen;
54
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070055 TestWindowManagerPolicy(Supplier<WindowManagerService> wmSupplier) {
Adrian Roos3150dbf2018-03-28 18:06:52 +020056 mWmSupplier = wmSupplier;
Wale Ogunwale51362492016-09-08 17:49:17 -070057 }
58
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070059 @Override
60 public void registerShortcutKey(long shortcutCode, IShortcutService shortcutKeyReceiver)
61 throws RemoteException {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070062 }
63
64 @Override
65 public void init(Context context, IWindowManager windowManager,
66 WindowManagerFuncs windowManagerFuncs) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070067 }
68
Riddle Hsu5ce4bb32018-07-18 16:11:30 +080069 public void setDefaultDisplay(DisplayContentInfo displayContentInfo) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070070 }
71
72 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070073 public int checkAddPermission(WindowManager.LayoutParams attrs, int[] outAppOp) {
74 return 0;
75 }
76
77 @Override
78 public boolean checkShowToOwnerOnly(WindowManager.LayoutParams attrs) {
79 return false;
80 }
81
82 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070083 public void adjustConfigurationLw(Configuration config, int keyboardPresence,
84 int navigationPresence) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070085 }
86
87 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070088 public int getMaxWallpaperLayer() {
89 return 0;
90 }
91
92 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070093 public boolean isKeyguardHostWindow(WindowManager.LayoutParams attrs) {
Andrii Kulian92c9a942017-10-10 00:41:41 -070094 return attrs.type == TYPE_STATUS_BAR;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070095 }
96
97 @Override
Jorim Jaggife762342016-10-13 14:33:27 +020098 public boolean canBeHiddenByKeyguardLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -070099 return false;
100 }
101
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100102 /**
103 * Sets a runnable to run when adding a splash screen which gets executed after the window has
104 * been added but before returning the surface.
105 */
106 void setRunnableWhenAddingSplashScreen(Runnable r) {
107 mRunnableWhenAddingSplashScreen = r;
108 }
109
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700110 @Override
Jorim Jaggiba41f4b2016-12-14 17:43:07 -0800111 public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700112 CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon,
Andrii Kulianfb1bf692017-01-17 11:17:34 -0800113 int logo, int windowFlags, Configuration overrideConfig, int displayId) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100114 final com.android.server.wm.WindowState window;
115 final AppWindowToken atoken;
Adrian Roos3150dbf2018-03-28 18:06:52 +0200116 final WindowManagerService wm = mWmSupplier.get();
Wale Ogunwaledb485de2018-10-29 09:47:07 -0700117 synchronized (wm.mGlobalLock) {
Adrian Roos3150dbf2018-03-28 18:06:52 +0200118 atoken = wm.mRoot.getAppWindowToken(appToken);
Kazuki Takise56148392018-07-27 10:44:25 +0900119 IWindow iWindow = mock(IWindow.class);
120 doReturn(mock(IBinder.class)).when(iWindow).asBinder();
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100121 window = WindowTestsBase.createWindow(null, TYPE_APPLICATION_STARTING, atoken,
Adrian Roos3150dbf2018-03-28 18:06:52 +0200122 "Starting window", 0 /* ownerId */, false /* internalWindows */, wm,
Kazuki Takise56148392018-07-27 10:44:25 +0900123 mock(Session.class), iWindow);
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100124 atoken.startingWindow = window;
125 }
126 if (mRunnableWhenAddingSplashScreen != null) {
127 mRunnableWhenAddingSplashScreen.run();
128 mRunnableWhenAddingSplashScreen = null;
129 }
130 return () -> {
Wale Ogunwaledb485de2018-10-29 09:47:07 -0700131 synchronized (wm.mGlobalLock) {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100132 atoken.removeChild(window);
133 atoken.startingWindow = null;
134 }
135 };
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700136 }
137
138 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800139 public void setKeyguardCandidateLw(WindowState win) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700140 }
141
142 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200143 public Animation createHiddenByKeyguardExit(boolean onWallpaper,
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700144 boolean goingToNotificationShade) {
145 return null;
146 }
147
148 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200149 public Animation createKeyguardWallpaperExit(boolean goingToNotificationShade) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700150 return null;
151 }
152
153 @Override
154 public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
155 return 0;
156 }
157
158 @Override
Charles Chen4cc014e12019-01-28 16:17:16 +0800159 public int interceptMotionBeforeQueueingNonInteractive(int displayId, long whenNanos,
160 int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700161 return 0;
162 }
163
164 @Override
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700165 public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700166 return 0;
167 }
168
169 @Override
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700170 public KeyEvent dispatchUnhandledKey(WindowState win, KeyEvent event, int policyFlags) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700171 return null;
172 }
173
174 @Override
Tiger Huang51c5a1d2018-12-11 20:24:51 +0800175 public void setTopFocusedDisplay(int displayId) {
176 }
177
178 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800179 public void applyKeyguardPolicyLw(WindowState win, WindowState imeTarget) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700180 }
181
182 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800183 public void setAllowLockscreenWhenOn(int displayId, boolean allow) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700184 }
185
186 @Override
Michael Wrighte3001042019-02-05 00:13:14 +0000187 public void startedWakingUp(@WakeReason int reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700188 }
189
190 @Override
Michael Wrighte3001042019-02-05 00:13:14 +0000191 public void finishedWakingUp(@WakeReason int reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700192 }
193
194 @Override
195 public void startedGoingToSleep(int why) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700196 }
197
198 @Override
199 public void finishedGoingToSleep(int why) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700200 }
201
202 @Override
203 public void screenTurningOn(ScreenOnListener screenOnListener) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700204 }
205
206 @Override
207 public void screenTurnedOn() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700208 }
209
210 @Override
Jorim Jaggi51304d72017-05-17 17:25:32 +0200211 public void screenTurningOff(ScreenOffListener screenOffListener) {
Jorim Jaggi51304d72017-05-17 17:25:32 +0200212 }
213
214 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700215 public void screenTurnedOff() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700216 }
217
218 @Override
219 public boolean isScreenOn() {
Jorim Jaggi9bafc712017-01-19 17:28:30 +0100220 return true;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700221 }
222
223 @Override
Adrian Roos7c894802017-07-19 12:25:34 +0200224 public boolean okToAnimate() {
Adrian Roose94c15c2017-05-09 13:17:54 -0700225 return true;
226 }
227
228 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700229 public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700230 }
231
232 @Override
233 public void notifyCameraLensCoverSwitchChanged(long whenNanos, boolean lensCovered) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700234 }
235
236 @Override
237 public void enableKeyguard(boolean enabled) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700238 }
239
240 @Override
241 public void exitKeyguardSecurely(OnKeyguardExitResult callback) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700242 }
243
244 @Override
245 public boolean isKeyguardLocked() {
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +0900246 return mKeyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700247 }
248
249 @Override
250 public boolean isKeyguardSecure(int userId) {
251 return false;
252 }
253
254 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200255 public boolean isKeyguardOccluded() {
256 return false;
257 }
258
259 @Override
260 public boolean isKeyguardTrustedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700261 return false;
262 }
263
264 @Override
265 public boolean isKeyguardShowingAndNotOccluded() {
Tadashi G. Takaokabf0d57b2018-11-19 16:09:58 +0900266 return mKeyguardShowingAndNotOccluded;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700267 }
268
269 @Override
Siarhei Vishniakou35fbb312017-12-13 13:48:50 -0800270 public boolean inKeyguardRestrictedKeyInputMode() {
271 return false;
272 }
273
274 @Override
Lucas Dupinc80c67e2017-12-04 14:29:10 -0800275 public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback,
276 CharSequence message) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700277 }
278
279 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200280 public boolean isKeyguardDrawnLw() {
281 return false;
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700282 }
283
284 @Override
Jorim Jaggife762342016-10-13 14:33:27 +0200285 public void onKeyguardOccludedChangedLw(boolean occluded) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700286 }
287
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700288 public void setSafeMode(boolean safeMode) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700289 }
290
291 @Override
292 public void systemReady() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700293 }
294
295 @Override
296 public void systemBooted() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700297 }
298
299 @Override
300 public void showBootMessage(CharSequence msg, boolean always) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700301 }
302
303 @Override
304 public void hideBootMessages() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700305 }
306
307 @Override
308 public void userActivity() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700309 }
310
311 @Override
312 public void enableScreenAfterBoot() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700313 }
314
315 @Override
Arthur Hunga4c52062019-02-19 11:31:44 +0800316 public boolean performHapticFeedback(int uid, String packageName, int effectId,
317 boolean always, String reason) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700318 return false;
319 }
320
321 @Override
322 public void keepScreenOnStartedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700323 }
324
325 @Override
326 public void keepScreenOnStoppedLw() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700327 }
328
329 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700330 public boolean hasNavigationBar() {
331 return false;
332 }
333
334 @Override
335 public void lockNow(Bundle options) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700336 }
337
338 @Override
Winson Chungdff7a732017-12-11 12:17:06 -0800339 public void showRecentApps() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700340 }
341
342 @Override
343 public void showGlobalActions() {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700344 }
345
346 @Override
Tiger Huang7c610aa2018-10-27 00:01:01 +0800347 public boolean isUserSetupComplete() {
348 return false;
349 }
350
351 @Override
352 public int getUiMode() {
353 return 0;
354 }
355
356 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700357 public void setCurrentUserLw(int newUserId) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700358 }
359
360 @Override
Evan Rosky18396452016-07-27 15:19:37 -0700361 public void setSwitchingUser(boolean switching) {
Evan Rosky18396452016-07-27 15:19:37 -0700362 }
363
364 @Override
Steven Timotiusaf03df62017-07-18 16:56:43 -0700365 public void writeToProto(ProtoOutputStream proto, long fieldId) {
Steven Timotiusaf03df62017-07-18 16:56:43 -0700366 }
367
368 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700369 public void dump(String prefix, PrintWriter writer, String[] args) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700370 }
371
372 @Override
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700373 public boolean isTopLevelWindow(int windowType) {
374 return false;
375 }
376
377 @Override
378 public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700379 }
380
381 @Override
Winson Chungac52f282017-03-30 14:44:52 -0700382 public void setPipVisibilityLw(boolean visible) {
Brian Carlstrom7203d622016-09-21 01:00:36 -0700383 }
384
385 @Override
386 public void setRecentsVisibilityLw(boolean visible) {
Keun-young Park4136d2d2017-05-08 14:51:59 -0700387 }
388
389 @Override
Matthew Ng64543e62018-02-28 17:35:10 -0800390 public void setNavBarVirtualKeyHapticFeedbackEnabledLw(boolean enabled) {
391 }
392
393 @Override
Keun-young Park4136d2d2017-05-08 14:51:59 -0700394 public void onSystemUiStarted() {
395 }
396
397 @Override
398 public boolean canDismissBootAnimation() {
399 return true;
400 }
Phil Weaverd7551602018-02-15 15:01:04 -0800401
402 @Override
Yoshiaki Nakae1bdfc822017-09-15 15:24:34 +0900403 public void requestUserActivityNotification() {
404 }
Benjamin Franz3662b152018-01-16 17:23:44 +0000405
406 @Override
chaviw0e9fb132018-06-05 16:29:13 -0700407 public boolean setAodShowing(boolean aodShowing) {
408 return false;
409 }
Wale Ogunwaleb699ce02016-07-18 12:05:30 -0700410}