19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* //device/java/android/android/view/IWindowSession.aidl
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2006, The Android Open Source Project
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** you may not use this file except in compliance with the License.
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view;
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
20a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tateimport android.content.ClipData;
21694f79b5d1196640d1beb680b7d1fc68e6e77cbdDianne Hackbornimport android.content.res.Configuration;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Rect;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Region;
247580493b014a2c7ea883cd291255798dc72ebbffDianne Hackbornimport android.os.Bundle;
2546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brownimport android.view.InputChannel;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IWindow;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.WindowManager;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.Surface;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private per-application interface to the window manager.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IWindowSession {
379a230e01a1237749a8a19a5de8d46531b0c8ca6aDianne Hackborn    int add(IWindow window, int seq, in WindowManager.LayoutParams attrs,
3846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown            in int viewVisibility, out Rect outContentInsets,
3946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown            out InputChannel outInputChannel);
409a230e01a1237749a8a19a5de8d46531b0c8ca6aDianne Hackborn    int addWithoutInputChannel(IWindow window, int seq, in WindowManager.LayoutParams attrs,
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in int viewVisibility, out Rect outContentInsets);
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void remove(IWindow window);
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the parameters of a window.  You supply the
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * new parameters, it returns the new frame of the window on screen (the
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * position should be ignored) and surface of the window.  The surface
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will be invalid if the window is currently hidden, else you can use it
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to draw the window's contents.
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param window The window being modified.
529a230e01a1237749a8a19a5de8d46531b0c8ca6aDianne Hackborn     * @param seq Ordering sequence number.
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param attrs If non-null, new attributes to apply to the window.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param requestedWidth The width the window wants to be.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param requestedHeight The height the window wants to be.
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param viewVisibility Window root view's visibility.
576d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn     * @param flags Request flags: {@link WindowManagerImpl#RELAYOUT_INSETS_PENDING},
586d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn     * {@link WindowManagerImpl#RELAYOUT_DEFER_SURFACE_DESTROY}.
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param outFrame Rect in which is placed the new position/size on
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * screen.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param outContentInsets Rect in which is placed the offsets from
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>outFrame</var> in which the content of the window should be
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * placed.  This can be used to modify the window layout to ensure its
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * contents are visible to the user, taking into account system windows
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * like the status bar or a soft keyboard.
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param outVisibleInsets Rect in which is placed the offsets from
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>outFrame</var> in which the window is actually completely visible
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the user.  This can be used to temporarily scroll the window's
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * contents to make sure the user can see it.  This is different than
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <var>outContentInsets</var> in that these insets change transiently,
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * so complex relayout of the window should not happen based on them.
72694f79b5d1196640d1beb680b7d1fc68e6e77cbdDianne Hackborn     * @param outConfiguration New configuration of window, if it is now
73694f79b5d1196640d1beb680b7d1fc68e6e77cbdDianne Hackborn     * becoming visible and the global configuration has changed since it
74694f79b5d1196640d1beb680b7d1fc68e6e77cbdDianne Hackborn     * was last displayed.
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param outSurface Object in which is placed the new display surface.
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return int Result flags: {@link WindowManagerImpl#RELAYOUT_SHOW_FOCUS},
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link WindowManagerImpl#RELAYOUT_FIRST_TIME}.
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
809a230e01a1237749a8a19a5de8d46531b0c8ca6aDianne Hackborn    int relayout(IWindow window, int seq, in WindowManager.LayoutParams attrs,
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int requestedWidth, int requestedHeight, int viewVisibility,
8285afd1b6f871d471fdff1980134676a5f1690525Dianne Hackborn            int flags, out Rect outFrame,
835c58de3a523a384c47b0b1e0f5dd9728a74cd9f7Dianne Hackborn            out Rect outContentInsets, out Rect outVisibleInsets,
845c58de3a523a384c47b0b1e0f5dd9728a74cd9f7Dianne Hackborn            out Configuration outConfig, out Surface outSurface);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
876d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn     * If a call to relayout() asked to have the surface destroy deferred,
886d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn     * it must call this once it is okay to destroy that surface.
896d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn     */
906d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn    void performDeferredDestroy(IWindow window);
916d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn
926d05fd3c795088ac60f86382df5a66d631e8a0cbDianne Hackborn    /**
93648251710162cdaf7371012a1cbb79b9bc5bc0e4Dianne Hackborn     * Called by a client to report that it ran out of graphics memory.
94648251710162cdaf7371012a1cbb79b9bc5bc0e4Dianne Hackborn     */
95648251710162cdaf7371012a1cbb79b9bc5bc0e4Dianne Hackborn    boolean outOfMemory(IWindow window);
96648251710162cdaf7371012a1cbb79b9bc5bc0e4Dianne Hackborn
97648251710162cdaf7371012a1cbb79b9bc5bc0e4Dianne Hackborn    /**
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Give the window manager a hint of the part of the window that is
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * completely transparent, allowing it to work with the surface flinger
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to optimize compositing of this part of the window.
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setTransparentRegion(IWindow window, in Region region);
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Tell the window manager about the content and visible insets of the
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * given window, which can be used to adjust the <var>outContentInsets</var>
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and <var>outVisibleInsets</var> values returned by
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #relayout relayout()} for windows behind this one.
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param touchableInsets Controls which part of the window inside of its
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * frame can receive pointer events, as defined by
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.ViewTreeObserver.InternalInsetsInfo}.
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setInsets(IWindow window, int touchableInsets, in Rect contentInsets,
115fbf097732137a32930d151f7ba6816a5b870c32aJeff Brown            in Rect visibleInsets, in Region touchableRegion);
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return the current display size in which the window is being laid out,
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * accounting for screen decorations around it.
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getDisplayFrame(IWindow window, out Rect outDisplayFrame);
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void finishDrawing(IWindow window);
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setInTouchMode(boolean showFocus);
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getInTouchMode();
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean performHapticFeedback(IWindow window, int effectId, boolean always);
129c8a0a75e1c61d1ab24bd46a8243041c107e738acDianne Hackborn
130c8a0a75e1c61d1ab24bd46a8243041c107e738acDianne Hackborn    /**
131a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     * Allocate the drag's thumbnail surface.  Also assigns a token that identifies
132a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     * the drag to the OS and passes that as the return value.  A return value of
133a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     * null indicates failure.
134a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     */
13502d2b3ba9ba830a8147db2739613f7bbb2d0fcbfChristopher Tate    IBinder prepareDrag(IWindow window, int flags,
136a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate            int thumbnailWidth, int thumbnailHeight, out Surface outSurface);
137a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate
138a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    /**
139a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     * Initiate the drag operation itself
140a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     */
141a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    boolean performDrag(IWindow window, IBinder dragToken, float touchX, float touchY,
142a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate            float thumbCenterX, float thumbCenterY, in ClipData data);
143a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate
144d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate	/**
145d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate	 * Report the result of a drop action targeted to the given window.
146d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate	 * consumed is 'true' when the drop was accepted by a valid recipient,
147d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate	 * 'false' otherwise.
148d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate	 */
149d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate	void reportDropResult(IWindow window, boolean consumed);
150d4533f1469990582e4a2dd0898429093fe2690c0Chris Tate
151a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    /**
152a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     * Tell the OS that we've just dragged into a View that is willing to accept the drop
153a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     */
154a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    void dragRecipientEntered(IWindow window);
155a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate
156a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    /**
157a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     * Tell the OS that we've just dragged *off* of a View that was willing to accept the drop
158a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate     */
159a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    void dragRecipientExited(IWindow window);
160a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate
161a53146c5569f8ff5f7eb55e9ad35d23ddacf2addChristopher Tate    /**
162c8a0a75e1c61d1ab24bd46a8243041c107e738acDianne Hackborn     * For windows with the wallpaper behind them, and the wallpaper is
163c8a0a75e1c61d1ab24bd46a8243041c107e738acDianne Hackborn     * larger than the screen, set the offset within the screen.
164bf6956b1d95442e9d9c483894d578fe6b7044cbbMarco Nelissen     * For multi screen launcher type applications, xstep and ystep indicate
165bf6956b1d95442e9d9c483894d578fe6b7044cbbMarco Nelissen     * how big the increment is from one screen to another.
166c8a0a75e1c61d1ab24bd46a8243041c107e738acDianne Hackborn     */
167bf6956b1d95442e9d9c483894d578fe6b7044cbbMarco Nelissen    void setWallpaperPosition(IBinder windowToken, float x, float y, float xstep, float ystep);
16819382ac1a4e4e7c23a1346d299368763f149de9cDianne Hackborn
16919382ac1a4e4e7c23a1346d299368763f149de9cDianne Hackborn    void wallpaperOffsetsComplete(IBinder window);
1707580493b014a2c7ea883cd291255798dc72ebbffDianne Hackborn
1717580493b014a2c7ea883cd291255798dc72ebbffDianne Hackborn    Bundle sendWallpaperCommand(IBinder window, String action, int x, int y,
1727580493b014a2c7ea883cd291255798dc72ebbffDianne Hackborn            int z, in Bundle extras, boolean sync);
1737580493b014a2c7ea883cd291255798dc72ebbffDianne Hackborn
1747580493b014a2c7ea883cd291255798dc72ebbffDianne Hackborn    void wallpaperCommandComplete(IBinder window, in Bundle result);
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
176