1 /* 2 ** Copyright 2006, 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 17 package android.view; 18 19 import com.android.internal.os.IResultReceiver; 20 import com.android.internal.policy.IKeyguardDismissCallback; 21 import com.android.internal.policy.IShortcutService; 22 23 import android.app.IAssistDataReceiver; 24 import android.content.res.CompatibilityInfo; 25 import android.content.res.Configuration; 26 import android.graphics.Bitmap; 27 import android.graphics.GraphicBuffer; 28 import android.graphics.Insets; 29 import android.graphics.Point; 30 import android.graphics.Rect; 31 import android.graphics.Region; 32 import android.os.Bundle; 33 import android.os.IRemoteCallback; 34 import android.os.ParcelFileDescriptor; 35 import android.view.IApplicationToken; 36 import android.view.IAppTransitionAnimationSpecsFuture; 37 import android.view.IDockedStackListener; 38 import android.view.IDisplayFoldListener; 39 import android.view.IOnKeyguardExitResult; 40 import android.view.IPinnedStackListener; 41 import android.view.RemoteAnimationAdapter; 42 import android.view.IRotationWatcher; 43 import android.view.ISystemGestureExclusionListener; 44 import android.view.IWallpaperVisibilityListener; 45 import android.view.IWindowSession; 46 import android.view.IWindowSessionCallback; 47 import android.view.KeyEvent; 48 import android.view.InputEvent; 49 import android.view.MagnificationSpec; 50 import android.view.MotionEvent; 51 import android.view.InputChannel; 52 import android.view.InputDevice; 53 import android.view.IInputFilter; 54 import android.view.AppTransitionAnimationSpec; 55 import android.view.WindowContentFrameStats; 56 import android.view.WindowManager; 57 import android.view.SurfaceControl; 58 59 /** 60 * System private interface to the window manager. 61 * 62 * {@hide} 63 */ 64 interface IWindowManager 65 { 66 /** 67 * ===== NOTICE ===== 68 * The first three methods must remain the first three methods. Scripts 69 * and tools rely on their transaction number to work properly. 70 */ 71 // This is used for debugging startViewServer(int port)72 boolean startViewServer(int port); // Transaction #1 stopViewServer()73 boolean stopViewServer(); // Transaction #2 isViewServerRunning()74 boolean isViewServerRunning(); // Transaction #3 75 openSession(in IWindowSessionCallback callback)76 IWindowSession openSession(in IWindowSessionCallback callback); 77 78 @UnsupportedAppUsage getInitialDisplaySize(int displayId, out Point size)79 void getInitialDisplaySize(int displayId, out Point size); 80 @UnsupportedAppUsage getBaseDisplaySize(int displayId, out Point size)81 void getBaseDisplaySize(int displayId, out Point size); setForcedDisplaySize(int displayId, int width, int height)82 void setForcedDisplaySize(int displayId, int width, int height); clearForcedDisplaySize(int displayId)83 void clearForcedDisplaySize(int displayId); 84 @UnsupportedAppUsage getInitialDisplayDensity(int displayId)85 int getInitialDisplayDensity(int displayId); getBaseDisplayDensity(int displayId)86 int getBaseDisplayDensity(int displayId); setForcedDisplayDensityForUser(int displayId, int density, int userId)87 void setForcedDisplayDensityForUser(int displayId, int density, int userId); clearForcedDisplayDensityForUser(int displayId, int userId)88 void clearForcedDisplayDensityForUser(int displayId, int userId); setForcedDisplayScalingMode(int displayId, int mode)89 void setForcedDisplayScalingMode(int displayId, int mode); // 0 = auto, 1 = disable 90 setOverscan(int displayId, int left, int top, int right, int bottom)91 void setOverscan(int displayId, int left, int top, int right, int bottom); 92 93 // These can only be called when holding the MANAGE_APP_TOKENS permission. setEventDispatching(boolean enabled)94 void setEventDispatching(boolean enabled); addWindowToken(IBinder token, int type, int displayId)95 void addWindowToken(IBinder token, int type, int displayId); removeWindowToken(IBinder token, int displayId)96 void removeWindowToken(IBinder token, int displayId); prepareAppTransition(int transit, boolean alwaysKeepCurrent)97 void prepareAppTransition(int transit, boolean alwaysKeepCurrent); 98 99 /** 100 * Like overridePendingAppTransitionMultiThumb, but uses a future to supply the specs. This is 101 * used for recents, where generating the thumbnails of the specs takes a non-trivial amount of 102 * time, so we want to move that off the critical path for starting the new activity. 103 */ 104 @UnsupportedAppUsage overridePendingAppTransitionMultiThumbFuture( IAppTransitionAnimationSpecsFuture specsFuture, IRemoteCallback startedCallback, boolean scaleUp, int displayId)105 void overridePendingAppTransitionMultiThumbFuture( 106 IAppTransitionAnimationSpecsFuture specsFuture, IRemoteCallback startedCallback, 107 boolean scaleUp, int displayId); 108 @UnsupportedAppUsage overridePendingAppTransitionRemote(in RemoteAnimationAdapter remoteAnimationAdapter, int displayId)109 void overridePendingAppTransitionRemote(in RemoteAnimationAdapter remoteAnimationAdapter, 110 int displayId); 111 @UnsupportedAppUsage executeAppTransition()112 void executeAppTransition(); 113 114 /** 115 * Used by system ui to report that recents has shown itself. 116 * @deprecated to be removed once prebuilts are updated 117 */ 118 @UnsupportedAppUsage endProlongedAnimations()119 void endProlongedAnimations(); 120 startFreezingScreen(int exitAnim, int enterAnim)121 void startFreezingScreen(int exitAnim, int enterAnim); stopFreezingScreen()122 void stopFreezingScreen(); 123 124 // these require DISABLE_KEYGUARD permission 125 /** @deprecated use Activity.setShowWhenLocked instead. */ disableKeyguard(IBinder token, String tag, int userId)126 void disableKeyguard(IBinder token, String tag, int userId); 127 /** @deprecated use Activity.setShowWhenLocked instead. */ reenableKeyguard(IBinder token, int userId)128 void reenableKeyguard(IBinder token, int userId); exitKeyguardSecurely(IOnKeyguardExitResult callback)129 void exitKeyguardSecurely(IOnKeyguardExitResult callback); 130 @UnsupportedAppUsage isKeyguardLocked()131 boolean isKeyguardLocked(); 132 @UnsupportedAppUsage isKeyguardSecure(int userId)133 boolean isKeyguardSecure(int userId); dismissKeyguard(IKeyguardDismissCallback callback, CharSequence message)134 void dismissKeyguard(IKeyguardDismissCallback callback, CharSequence message); 135 136 // Requires INTERACT_ACROSS_USERS_FULL permission setSwitchingUser(boolean switching)137 void setSwitchingUser(boolean switching); 138 closeSystemDialogs(String reason)139 void closeSystemDialogs(String reason); 140 141 // These can only be called with the SET_ANIMATON_SCALE permission. 142 @UnsupportedAppUsage getAnimationScale(int which)143 float getAnimationScale(int which); 144 @UnsupportedAppUsage getAnimationScales()145 float[] getAnimationScales(); 146 @UnsupportedAppUsage setAnimationScale(int which, float scale)147 void setAnimationScale(int which, float scale); 148 @UnsupportedAppUsage setAnimationScales(in float[] scales)149 void setAnimationScales(in float[] scales); 150 getCurrentAnimatorScale()151 float getCurrentAnimatorScale(); 152 153 // For testing setInTouchMode(boolean showFocus)154 void setInTouchMode(boolean showFocus); 155 156 // For StrictMode flashing a red border on violations from the UI 157 // thread. The uid/pid is implicit from the Binder call, and the Window 158 // Manager uses that to determine whether or not the red border should 159 // actually be shown. (it will be ignored that pid doesn't have windows 160 // on screen) showStrictModeViolation(boolean on)161 void showStrictModeViolation(boolean on); 162 163 // Proxy to set the system property for whether the flashing 164 // should be enabled. The 'enabled' value is null or blank for 165 // the system default (differs per build variant) or any valid 166 // boolean string as parsed by SystemProperties.getBoolean(). 167 @UnsupportedAppUsage setStrictModeVisualIndicatorPreference(String enabled)168 void setStrictModeVisualIndicatorPreference(String enabled); 169 170 /** 171 * Set whether screen capture is disabled for all windows of a specific user from 172 * the device policy cache. 173 */ refreshScreenCaptureDisabled(int userId)174 void refreshScreenCaptureDisabled(int userId); 175 176 // These can only be called with the SET_ORIENTATION permission. 177 /** 178 * Update the current screen rotation based on the current state of 179 * the world. 180 * @param alwaysSendConfiguration Flag to force a new configuration to 181 * be evaluated. This can be used when there are other parameters in 182 * configuration that are changing. 183 * @param forceRelayout If true, the window manager will always do a relayout 184 * of its windows even if the rotation hasn't changed. 185 */ updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout)186 void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout); 187 188 /** 189 * Retrieve the current orientation of the primary screen. 190 * @return Constant as per {@link android.view.Surface.Rotation}. 191 * 192 * @see android.view.Display#DEFAULT_DISPLAY 193 */ getDefaultDisplayRotation()194 int getDefaultDisplayRotation(); 195 196 /** 197 * Watch the rotation of the specified screen. Returns the current rotation, 198 * calls back when it changes. 199 */ watchRotation(IRotationWatcher watcher, int displayId)200 int watchRotation(IRotationWatcher watcher, int displayId); 201 202 /** 203 * Remove a rotation watcher set using watchRotation. 204 * @hide 205 */ 206 @UnsupportedAppUsage removeRotationWatcher(IRotationWatcher watcher)207 void removeRotationWatcher(IRotationWatcher watcher); 208 209 /** 210 * Determine the preferred edge of the screen to pin the compact options menu against. 211 * 212 * @param displayId Id of the display where the menu window currently resides. 213 * @return a Gravity value for the options menu panel. 214 * @hide 215 */ getPreferredOptionsPanelGravity(int displayId)216 int getPreferredOptionsPanelGravity(int displayId); 217 218 /** 219 * Equivalent to calling {@link #freezeDisplayRotation(int, int)} with {@link 220 * android.view.Display#DEFAULT_DISPLAY} and given rotation. 221 */ 222 @UnsupportedAppUsage freezeRotation(int rotation)223 void freezeRotation(int rotation); 224 225 /** 226 * Equivalent to calling {@link #thawDisplayRotation(int)} with {@link 227 * android.view.Display#DEFAULT_DISPLAY}. 228 */ 229 @UnsupportedAppUsage thawRotation()230 void thawRotation(); 231 232 /** 233 * Equivelant to call {@link #isDisplayRotationFrozen(int)} with {@link 234 * android.view.Display#DEFAULT_DISPLAY}. 235 */ isRotationFrozen()236 boolean isRotationFrozen(); 237 238 /** 239 * Lock the display orientation to the specified rotation, or to the current 240 * rotation if -1. Sensor input will be ignored until thawRotation() is called. 241 * 242 * @param displayId the ID of display which rotation should be frozen. 243 * @param rotation one of {@link android.view.Surface#ROTATION_0}, 244 * {@link android.view.Surface#ROTATION_90}, {@link android.view.Surface#ROTATION_180}, 245 * {@link android.view.Surface#ROTATION_270} or -1 to freeze it to current rotation. 246 * @hide 247 */ freezeDisplayRotation(int displayId, int rotation)248 void freezeDisplayRotation(int displayId, int rotation); 249 250 /** 251 * Release the orientation lock imposed by freezeRotation() on the display. 252 * 253 * @param displayId the ID of display which rotation should be thawed. 254 * @hide 255 */ thawDisplayRotation(int displayId)256 void thawDisplayRotation(int displayId); 257 258 /** 259 * Gets whether the rotation is frozen on the display. 260 * 261 * @param displayId the ID of display which frozen is needed. 262 * @return Whether the rotation is frozen. 263 */ isDisplayRotationFrozen(int displayId)264 boolean isDisplayRotationFrozen(int displayId); 265 266 /** 267 * Screenshot the current wallpaper layer, including the whole screen. 268 */ screenshotWallpaper()269 Bitmap screenshotWallpaper(); 270 271 /** 272 * Registers a wallpaper visibility listener. 273 * @return Current visibility. 274 */ registerWallpaperVisibilityListener(IWallpaperVisibilityListener listener, int displayId)275 boolean registerWallpaperVisibilityListener(IWallpaperVisibilityListener listener, 276 int displayId); 277 278 /** 279 * Remove a visibility watcher that was added using registerWallpaperVisibilityListener. 280 */ unregisterWallpaperVisibilityListener(IWallpaperVisibilityListener listener, int displayId)281 void unregisterWallpaperVisibilityListener(IWallpaperVisibilityListener listener, 282 int displayId); 283 284 /** 285 * Registers a system gesture exclusion listener for a given display. 286 */ registerSystemGestureExclusionListener(ISystemGestureExclusionListener listener, int displayId)287 void registerSystemGestureExclusionListener(ISystemGestureExclusionListener listener, 288 int displayId); 289 290 /** 291 * Unregisters a system gesture exclusion listener for a given display. 292 */ unregisterSystemGestureExclusionListener(ISystemGestureExclusionListener listener, int displayId)293 void unregisterSystemGestureExclusionListener(ISystemGestureExclusionListener listener, 294 int displayId); 295 296 /** 297 * Used only for assist -- request a screenshot of the current application. 298 */ requestAssistScreenshot(IAssistDataReceiver receiver)299 boolean requestAssistScreenshot(IAssistDataReceiver receiver); 300 301 /** 302 * Called by the status bar to notify Views of changes to System UI visiblity. 303 */ statusBarVisibilityChanged(int displayId, int visibility)304 oneway void statusBarVisibilityChanged(int displayId, int visibility); 305 306 /** 307 * When set to {@code true} the system bars will always be shown. This is true even if an app 308 * requests to be fullscreen by setting the system ui visibility flags. The 309 * functionality was added for the automotive case as a way to guarantee required content stays 310 * on screen at all times. 311 * 312 * @hide 313 */ setForceShowSystemBars(boolean show)314 oneway void setForceShowSystemBars(boolean show); 315 316 /** 317 * Called by System UI to notify of changes to the visibility of Recents. 318 */ setRecentsVisibility(boolean visible)319 oneway void setRecentsVisibility(boolean visible); 320 321 /** 322 * Called by System UI to notify of changes to the visibility of PIP. 323 */ setPipVisibility(boolean visible)324 oneway void setPipVisibility(boolean visible); 325 326 /** 327 * Called by System UI to notify of changes to the visibility and height of the shelf. 328 */ 329 @UnsupportedAppUsage setShelfHeight(boolean visible, int shelfHeight)330 void setShelfHeight(boolean visible, int shelfHeight); 331 332 /** 333 * Called by System UI to enable or disable haptic feedback on the navigation bar buttons. 334 */ 335 @UnsupportedAppUsage setNavBarVirtualKeyHapticFeedbackEnabled(boolean enabled)336 void setNavBarVirtualKeyHapticFeedbackEnabled(boolean enabled); 337 338 /** 339 * Device has a software navigation bar (separate from the status bar) on specific display. 340 * 341 * @param displayId the id of display to check if there is a software navigation bar. 342 */ 343 @UnsupportedAppUsage hasNavigationBar(int displayId)344 boolean hasNavigationBar(int displayId); 345 346 /** 347 * Get the position of the nav bar 348 */ getNavBarPosition(int displayId)349 int getNavBarPosition(int displayId); 350 351 /** 352 * Lock the device immediately with the specified options (can be null). 353 */ 354 @UnsupportedAppUsage lockNow(in Bundle options)355 void lockNow(in Bundle options); 356 357 /** 358 * Device is in safe mode. 359 */ 360 @UnsupportedAppUsage isSafeModeEnabled()361 boolean isSafeModeEnabled(); 362 363 /** 364 * Enables the screen if all conditions are met. 365 */ enableScreenIfNeeded()366 void enableScreenIfNeeded(); 367 368 /** 369 * Clears the frame statistics for a given window. 370 * 371 * @param token The window token. 372 * @return Whether the frame statistics were cleared. 373 */ clearWindowContentFrameStats(IBinder token)374 boolean clearWindowContentFrameStats(IBinder token); 375 376 /** 377 * Gets the content frame statistics for a given window. 378 * 379 * @param token The window token. 380 * @return The frame statistics or null if the window does not exist. 381 */ getWindowContentFrameStats(IBinder token)382 WindowContentFrameStats getWindowContentFrameStats(IBinder token); 383 384 /** 385 * @return the dock side the current docked stack is at; must be one of the 386 * WindowManagerGlobal.DOCKED_* values 387 */ 388 @UnsupportedAppUsage getDockedStackSide()389 int getDockedStackSide(); 390 391 /** 392 * Sets the region the user can touch the divider. This region will be excluded from the region 393 * which is used to cause a focus switch when dispatching touch. 394 */ setDockedStackDividerTouchRegion(in Rect touchableRegion)395 void setDockedStackDividerTouchRegion(in Rect touchableRegion); 396 397 /** 398 * Registers a listener that will be called when the dock divider changes its visibility or when 399 * the docked stack gets added/removed. 400 */ 401 @UnsupportedAppUsage registerDockedStackListener(IDockedStackListener listener)402 void registerDockedStackListener(IDockedStackListener listener); 403 404 /** 405 * Registers a listener that will be called when the pinned stack state changes. 406 */ registerPinnedStackListener(int displayId, IPinnedStackListener listener)407 void registerPinnedStackListener(int displayId, IPinnedStackListener listener); 408 409 /** 410 * Updates the dim layer used while resizing. 411 * 412 * @param visible Whether the dim layer should be visible. 413 * @param targetWindowingMode The windowing mode of the stack the dim layer should be placed on. 414 * @param alpha The translucency of the dim layer, between 0 and 1. 415 */ setResizeDimLayer(boolean visible, int targetWindowingMode, float alpha)416 void setResizeDimLayer(boolean visible, int targetWindowingMode, float alpha); 417 418 /** 419 * Requests Keyboard Shortcuts from the displayed window. 420 * 421 * @param receiver The receiver to deliver the results to. 422 */ requestAppKeyboardShortcuts(IResultReceiver receiver, int deviceId)423 void requestAppKeyboardShortcuts(IResultReceiver receiver, int deviceId); 424 425 /** 426 * Retrieves the current stable insets from the primary display. 427 */ 428 @UnsupportedAppUsage getStableInsets(int displayId, out Rect outInsets)429 void getStableInsets(int displayId, out Rect outInsets); 430 431 /** 432 * Set the forwarded insets on the display. 433 * <p> 434 * This is only used in case a virtual display is displayed on another display that has insets, 435 * and the bounds of the virtual display is overlapping with the insets from the host display. 436 * In that case, the contents on the virtual display won't be placed over the forwarded insets. 437 * Only the owner of the display is permitted to set the forwarded insets on it. 438 */ setForwardedInsets(int displayId, in Insets insets)439 void setForwardedInsets(int displayId, in Insets insets); 440 441 /** 442 * Register shortcut key. Shortcut code is packed as: 443 * (MetaState << Integer.SIZE) | KeyCode 444 * @hide 445 */ registerShortcutKey(in long shortcutCode, IShortcutService keySubscriber)446 void registerShortcutKey(in long shortcutCode, IShortcutService keySubscriber); 447 448 /** 449 * Create an input consumer by name and display id. 450 */ 451 @UnsupportedAppUsage createInputConsumer(IBinder token, String name, int displayId, out InputChannel inputChannel)452 void createInputConsumer(IBinder token, String name, int displayId, 453 out InputChannel inputChannel); 454 455 /** 456 * Destroy an input consumer by name and display id. 457 * This method will also dispose the input channels associated with that InputConsumer. 458 */ 459 @UnsupportedAppUsage destroyInputConsumer(String name, int displayId)460 boolean destroyInputConsumer(String name, int displayId); 461 462 /** 463 * Return the touch region for the current IME window, or an empty region if there is none. 464 */ getCurrentImeTouchRegion()465 Region getCurrentImeTouchRegion(); 466 467 /** 468 * Registers an IDisplayFoldListener. 469 */ registerDisplayFoldListener(IDisplayFoldListener listener)470 void registerDisplayFoldListener(IDisplayFoldListener listener); 471 472 /** 473 * Unregisters an IDisplayFoldListener. 474 */ unregisterDisplayFoldListener(IDisplayFoldListener listener)475 void unregisterDisplayFoldListener(IDisplayFoldListener listener); 476 477 /** 478 * Starts a window trace. 479 */ startWindowTrace()480 void startWindowTrace(); 481 482 /** 483 * Stops a window trace. 484 */ stopWindowTrace()485 void stopWindowTrace(); 486 487 /** 488 * Returns true if window trace is enabled. 489 */ isWindowTraceEnabled()490 boolean isWindowTraceEnabled(); 491 492 /** 493 * Requests that the WindowManager sends 494 * WindowManagerPolicyConstants#ACTION_USER_ACTIVITY_NOTIFICATION on the next user activity. 495 */ requestUserActivityNotification()496 void requestUserActivityNotification(); 497 498 /** 499 * Notify WindowManager that it should not override the info in DisplayManager for the specified 500 * display. This can disable letter- or pillar-boxing applied in DisplayManager when the metrics 501 * of the logical display reported from WindowManager do not correspond to the metrics of the 502 * physical display it is based on. 503 * 504 * @param displayId The id of the display. 505 */ dontOverrideDisplayInfo(int displayId)506 void dontOverrideDisplayInfo(int displayId); 507 508 /** 509 * Gets the windowing mode of the display. 510 * 511 * @param displayId The id of the display. 512 * @return {@link WindowConfiguration.WindowingMode} 513 */ getWindowingMode(int displayId)514 int getWindowingMode(int displayId); 515 516 /** 517 * Sets the windowing mode of the display. 518 * 519 * @param displayId The id of the display. 520 * @param mode {@link WindowConfiguration.WindowingMode} 521 */ setWindowingMode(int displayId, int mode)522 void setWindowingMode(int displayId, int mode); 523 524 /** 525 * Gets current remove content mode of the display. 526 * <p> 527 * What actions should be performed with the display's content when it is removed. Default 528 * behavior for public displays in this case is to move all activities to the primary display 529 * and make it focused. For private display is to destroy all activities. 530 * </p> 531 * 532 * @param displayId The id of the display. 533 * @return The remove content mode of the display. 534 * @see WindowManager#REMOVE_CONTENT_MODE_MOVE_TO_PRIMARY 535 * @see WindowManager#REMOVE_CONTENT_MODE_DESTROY 536 */ getRemoveContentMode(int displayId)537 int getRemoveContentMode(int displayId); 538 539 /** 540 * Sets the remove content mode of the display. 541 * <p> 542 * This mode indicates what actions should be performed with the display's content when it is 543 * removed. 544 * </p> 545 * 546 * @param displayId The id of the display. 547 * @param mode Remove content mode. 548 * @see WindowManager#REMOVE_CONTENT_MODE_MOVE_TO_PRIMARY 549 * @see WindowManager#REMOVE_CONTENT_MODE_DESTROY 550 */ setRemoveContentMode(int displayId, int mode)551 void setRemoveContentMode(int displayId, int mode); 552 553 /** 554 * Indicates that the display should show its content when non-secure keyguard is shown. 555 * <p> 556 * This flag identifies secondary displays that will continue showing content if keyguard can be 557 * dismissed without entering credentials. 558 * </p><p> 559 * An example of usage is a virtual display which content is displayed on external hardware 560 * display that is not visible to the system directly. 561 * </p> 562 * 563 * @param displayId The id of the display. 564 * @return {@code true} if the display should show its content when non-secure keyguard is 565 * shown. 566 * @see KeyguardManager#isDeviceSecure() 567 * @see KeyguardManager#isDeviceLocked() 568 */ shouldShowWithInsecureKeyguard(int displayId)569 boolean shouldShowWithInsecureKeyguard(int displayId); 570 571 /** 572 * Sets that the display should show its content when non-secure keyguard is shown. 573 * 574 * @param displayId The id of the display. 575 * @param shouldShow Indicates that the display should show its content when non-secure keyguard 576 * is shown. 577 * @see KeyguardManager#isDeviceSecure() 578 * @see KeyguardManager#isDeviceLocked() 579 */ setShouldShowWithInsecureKeyguard(int displayId, boolean shouldShow)580 void setShouldShowWithInsecureKeyguard(int displayId, boolean shouldShow); 581 582 /** 583 * Indicates the display should show system decors. 584 * <p> 585 * System decors include status bar, navigation bar, launcher. 586 * </p> 587 * 588 * @param displayId The id of the display. 589 * @return {@code true} if the display should show system decors. 590 */ shouldShowSystemDecors(int displayId)591 boolean shouldShowSystemDecors(int displayId); 592 593 /** 594 * Sets that the display should show system decors. 595 * <p> 596 * System decors include status bar, navigation bar, launcher. 597 * </p> 598 * 599 * @param displayId The id of the display. 600 * @param shouldShow Indicates that the display should show system decors. 601 */ setShouldShowSystemDecors(int displayId, boolean shouldShow)602 void setShouldShowSystemDecors(int displayId, boolean shouldShow); 603 604 /** 605 * Indicates that the display should show IME. 606 * 607 * @param displayId The id of the display. 608 * @return {@code true} if the display should show IME. 609 * @see KeyguardManager#isDeviceSecure() 610 * @see KeyguardManager#isDeviceLocked() 611 */ shouldShowIme(int displayId)612 boolean shouldShowIme(int displayId); 613 614 /** 615 * Sets that the display should show IME. 616 * 617 * @param displayId The id of the display. 618 * @param shouldShow Indicates that the display should show IME. 619 * @see KeyguardManager#isDeviceSecure() 620 * @see KeyguardManager#isDeviceLocked() 621 */ setShouldShowIme(int displayId, boolean shouldShow)622 void setShouldShowIme(int displayId, boolean shouldShow); 623 624 /** 625 * Waits for transactions to get applied before injecting input. 626 * This includes waiting for the input windows to get sent to InputManager. 627 * 628 * This is needed for testing since the system add windows and injects input 629 * quick enough that the windows don't have time to get sent to InputManager. 630 */ injectInputAfterTransactionsApplied(in InputEvent ev, int mode)631 boolean injectInputAfterTransactionsApplied(in InputEvent ev, int mode); 632 633 /** 634 * Waits until all animations have completed and input information has been sent from 635 * WindowManager to native InputManager. 636 * 637 * This is needed for testing since we need to ensure input information has been propagated to 638 * native InputManager before proceeding with tests. 639 */ syncInputTransactions()640 void syncInputTransactions(); 641 } 642