17da6ac33a9de82be52e22846d5f22d502452854cDianne Hackborn/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2006, The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputContext;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputMethodClient;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
222f0b17573d4324832f7a20402a3d2b5920bc4866Dianne Hackbornimport android.content.res.CompatibilityInfo;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Configuration;
240aae2d4e0075fd699cf40b26dca0eb2c3b3e37d2Dianne Hackbornimport android.graphics.Bitmap;
25ac8dea12c17aa047e03a358110aeb60401d36aa2Dianne Hackbornimport android.graphics.Point;
2638e29a61d0c87fe3e391d24e2eb11dd1800d107dDianne Hackbornimport android.os.IRemoteCallback;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IApplicationToken;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IOnKeyguardExitResult;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IRotationWatcher;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IWindowSession;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent;
326ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brownimport android.view.InputEvent;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
34a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0Jeff Brownimport android.view.InputChannel;
358d60866e2100db70ecf0502c14768a384514d7e9Jeff Brownimport android.view.InputDevice;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private interface to the window manager.
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IWindowManager
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ===== NOTICE =====
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The first three methods must remain the first three methods. Scripts
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and tools rely on their transaction number to work properly.
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // This is used for debugging
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean startViewServer(int port);   // Transaction #1
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean stopViewServer();            // Transaction #2
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isViewServerRunning();       // Transaction #3
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    IWindowSession openSession(in IInputMethodClient client,
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in IInputContext inputContext);
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean inputMethodClientHasFocus(IInputMethodClient client);
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
58ac8dea12c17aa047e03a358110aeb60401d36aa2Dianne Hackborn    void getDisplaySize(out Point size);
59bc68a59c024bdb745dac8e2ec7408a9f30595f1aJeff Brown    void getRealDisplaySize(out Point size);
60ac8dea12c17aa047e03a358110aeb60401d36aa2Dianne Hackborn    int getMaximumSizeDimension();
6168c33ca7ce1f142eb5f1e1f90118aeba4c9db1e3Dianne Hackborn    void getCurrentSizeRange(out Point smallestSize, out Point largestSize);
62ac8dea12c17aa047e03a358110aeb60401d36aa2Dianne Hackborn
637916ac65dc492e4e1431879875c77d7121fbf82eDianne Hackborn    void setForcedDisplaySize(int longDimen, int shortDimen);
647916ac65dc492e4e1431879875c77d7121fbf82eDianne Hackborn    void clearForcedDisplaySize();
657916ac65dc492e4e1431879875c77d7121fbf82eDianne Hackborn
66f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn    // Is the device configured to have a full system bar for larger screens?
67f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn    boolean hasSystemNavBar();
6881e56d535c853d73ff537357da5b935f51cb779dDianne Hackborn
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called when holding the MANAGE_APP_TOKENS permission.
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void pauseKeyDispatching(IBinder token);
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void resumeKeyDispatching(IBinder token);
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setEventDispatching(boolean enabled);
73e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void addWindowToken(IBinder token, int type);
74e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void removeWindowToken(IBinder token);
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addAppToken(int addPos, IApplicationToken token,
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int groupId, int requestedOrientation, boolean fullscreen);
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppGroupId(IBinder token, int groupId);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppOrientation(IApplicationToken token, int requestedOrientation);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getAppOrientation(IApplicationToken token);
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setFocusedApp(IBinder token, boolean moveFocusNow);
817da6ac33a9de82be52e22846d5f22d502452854cDianne Hackborn    void prepareAppTransition(int transit, boolean alwaysKeepCurrent);
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPendingAppTransition();
8384375876fcef73c5fa9c3de205c7db908ee14e15Dianne Hackborn    void overridePendingAppTransition(String packageName, int enterAnim, int exitAnim,
8484375876fcef73c5fa9c3de205c7db908ee14e15Dianne Hackborn            IRemoteCallback startedCallback);
85eabfb3a36e9469c5e219f92b39b7200104319185Dianne Hackborn    void overridePendingAppTransitionScaleUp(int startX, int startY, int startWidth,
86eabfb3a36e9469c5e219f92b39b7200104319185Dianne Hackborn            int startHeight);
878078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn    void overridePendingAppTransitionThumb(in Bitmap srcThumb, int startX, int startY,
8821385cd83d7d7938b57a4acbaa236dd4c7804ed4Michael Jurka            IRemoteCallback startedCallback, boolean delayed);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void executeAppTransition();
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppStartingWindow(IBinder token, String pkg, int theme,
912f0b17573d4324832f7a20402a3d2b5920bc4866Dianne Hackborn            in CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes,
927eec10e6c99c30d5ee061fec08ac89ad4254ac32Dianne Hackborn            int icon, int windowFlags, IBinder transferFrom, boolean createIfNeeded);
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppWillBeHidden(IBinder token);
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppVisibility(IBinder token, boolean visible);
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void startAppFreezingScreen(IBinder token, int configChanges);
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void stopAppFreezingScreen(IBinder token, boolean force);
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void removeAppToken(IBinder token);
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void moveAppToken(int index, IBinder token);
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void moveAppTokensToTop(in List<IBinder> tokens);
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void moveAppTokensToBottom(in List<IBinder> tokens);
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
102e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // Re-evaluate the current orientation from the caller's state.
103e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // If there is a change, the new Configuration is returned and the
104e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // caller must call setNewConfiguration() sometime later.
105e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    Configuration updateOrientationFromAppTokens(in Configuration currentConfig,
106e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn            IBinder freezeThisOneIfNeeded);
107e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    void setNewConfiguration(in Configuration config);
108e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // these require DISABLE_KEYGUARD permission
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void disableKeyguard(IBinder token, String tag);
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void reenableKeyguard(IBinder token);
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void exitKeyguardSecurely(IOnKeyguardExitResult callback);
113520d8bc1d840966b5519195aaa514597a662c053Mike Lockwood    boolean isKeyguardLocked();
114520d8bc1d840966b5519195aaa514597a662c053Mike Lockwood    boolean isKeyguardSecure();
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean inKeyguardRestrictedInputMode();
11690c52de28691ca0bbbf7c039ef20f85ce46882ccDianne Hackborn    void dismissKeyguard();
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
118ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn    void closeSystemDialogs(String reason);
119ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called with the SET_ANIMATON_SCALE permission.
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getAnimationScale(int which);
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float[] getAnimationScales();
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAnimationScale(int which, float scale);
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAnimationScales(in float[] scales);
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // For testing
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setInTouchMode(boolean showFocus);
1286804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick
1296804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // For StrictMode flashing a red border on violations from the UI
1306804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // thread.  The uid/pid is implicit from the Binder call, and the Window
1316804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // Manager uses that to determine whether or not the red border should
1326804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // actually be shown.  (it will be ignored that pid doesn't have windows
1336804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // on screen)
1346804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    void showStrictModeViolation(boolean on);
1356804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick
136c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // Proxy to set the system property for whether the flashing
137c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // should be enabled.  The 'enabled' value is null or blank for
138c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // the system default (differs per build variant) or any valid
139c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // boolean string as parsed by SystemProperties.getBoolean().
140c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    void setStrictModeVisualIndicatorPreference(String enabled);
141c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called with the SET_ORIENTATION permission.
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
14401a98ddbdfbaf1f0d2bc602537e6e314364902a3Jeff Brown     * Update the current screen rotation based on the current state of
14501a98ddbdfbaf1f0d2bc602537e6e314364902a3Jeff Brown     * the world.
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alwaysSendConfiguration Flag to force a new configuration to
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be evaluated.  This can be used when there are other parameters in
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * configuration that are changing.
149f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn     * @param forceRelayout If true, the window manager will always do a relayout
150f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn     * of its windows even if the rotation hasn't changed.
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
152f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn    void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout);
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve the current screen orientation, constants as per
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.Surface}.
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getRotation();
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Watch the rotation of the screen.  Returns the current rotation,
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls back when it changes.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int watchRotation(IRotationWatcher watcher);
165b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler
166dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell    /**
167dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     * Determine the preferred edge of the screen to pin the compact options menu against.
168dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     * @return a Gravity value for the options menu panel
169dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     * @hide
170dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     */
171dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell    int getPreferredOptionsPanelGravity();
172dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell
173b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	/**
1744dfce20cac7492882d366d053006795aefad59daJeff Brown	 * Lock the device orientation to the specified rotation, or to the
1754dfce20cac7492882d366d053006795aefad59daJeff Brown	 * current rotation if -1.  Sensor input will be ignored until
1764dfce20cac7492882d366d053006795aefad59daJeff Brown	 * thawRotation() is called.
177b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * @hide
178b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 */
1794dfce20cac7492882d366d053006795aefad59daJeff Brown	void freezeRotation(int rotation);
180b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler
181b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	/**
182b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * Release the orientation lock imposed by freezeRotation().
183b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * @hide
184b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 */
185b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	void thawRotation();
1860aae2d4e0075fd699cf40b26dca0eb2c3b3e37d2Dianne Hackborn
1870aae2d4e0075fd699cf40b26dca0eb2c3b3e37d2Dianne Hackborn	/**
1880aae2d4e0075fd699cf40b26dca0eb2c3b3e37d2Dianne Hackborn	 * Create a screenshot of the applications currently displayed.
1890aae2d4e0075fd699cf40b26dca0eb2c3b3e37d2Dianne Hackborn	 */
190d2835935d2df8be70d1b37d3ef3b2fe0155b3422Dianne Hackborn	Bitmap screenshotApplications(IBinder appToken, int maxWidth, int maxHeight);
191664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato
192664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato    /**
193664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato     * Called by the status bar to notify Views of changes to System UI visiblity.
194664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato     */
195664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato    void statusBarVisibilityChanged(int visibility);
1961a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown
1971a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown    /**
19838e29a61d0c87fe3e391d24e2eb11dd1800d107dDianne Hackborn     * Block until the given window has been drawn to the screen.
19929aae6f36e565b8f2a99f2193597b964bb800ee8Dianne Hackborn     */
20038e29a61d0c87fe3e391d24e2eb11dd1800d107dDianne Hackborn    void waitForWindowDrawn(IBinder token, in IRemoteCallback callback);
2010c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler
2020c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler    /**
2030c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler     * Device has a software navigation bar (separate from the status bar).
2040c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler     */
2050c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler    boolean hasNavigationBar();
20693c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller
20793c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller    /**
20893c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller     * Lock the device immediately.
20993c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller     */
21093c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller    void lockNow();
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
212