Home | History | Annotate | Download | only in view
      1 /*
      2  * Copyright (C) 2014 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 android.graphics.Rect;
     20 import android.graphics.Region;
     21 import android.hardware.display.DisplayManagerInternal;
     22 import android.os.IBinder;
     23 import android.os.IRemoteCallback;
     24 
     25 import java.util.List;
     26 
     27 /**
     28  * Window manager local system service interface.
     29  *
     30  * @hide Only for use within the system server.
     31  */
     32 public abstract class WindowManagerInternal {
     33 
     34     /**
     35      * Interface to receive a callback when the windows reported for
     36      * accessibility changed.
     37      */
     38     public interface WindowsForAccessibilityCallback {
     39 
     40         /**
     41          * Called when the windows for accessibility changed.
     42          *
     43          * @param windows The windows for accessibility.
     44          */
     45         public void onWindowsForAccessibilityChanged(List<WindowInfo> windows);
     46     }
     47 
     48     /**
     49      * Callbacks for contextual changes that affect the screen magnification
     50      * feature.
     51      */
     52     public interface MagnificationCallbacks {
     53 
     54         /**
     55          * Called when the bounds of the screen content that is magnified changed.
     56          * Note that not the entire screen is magnified.
     57          *
     58          * @param bounds The bounds.
     59          */
     60         public void onMagnifedBoundsChanged(Region bounds);
     61 
     62         /**
     63          * Called when an application requests a rectangle on the screen to allow
     64          * the client to apply the appropriate pan and scale.
     65          *
     66          * @param left The rectangle left.
     67          * @param top The rectangle top.
     68          * @param right The rectangle right.
     69          * @param bottom The rectangle bottom.
     70          */
     71         public void onRectangleOnScreenRequested(int left, int top, int right, int bottom);
     72 
     73         /**
     74          * Notifies that the rotation changed.
     75          *
     76          * @param rotation The current rotation.
     77          */
     78         public void onRotationChanged(int rotation);
     79 
     80         /**
     81          * Notifies that the context of the user changed. For example, an application
     82          * was started.
     83          */
     84         public void onUserContextChanged();
     85     }
     86 
     87     /**
     88      * Request that the window manager call
     89      * {@link DisplayManagerInternal#performTraversalInTransactionFromWindowManager}
     90      * within a surface transaction at a later time.
     91      */
     92     public abstract void requestTraversalFromDisplayManager();
     93 
     94     /**
     95      * Set by the accessibility layer to observe changes in the magnified region,
     96      * rotation, and other window transformations related to display magnification
     97      * as the window manager is responsible for doing the actual magnification
     98      * and has access to the raw window data while the accessibility layer serves
     99      * as a controller.
    100      *
    101      * @param callbacks The callbacks to invoke.
    102      */
    103     public abstract void setMagnificationCallbacks(MagnificationCallbacks callbacks);
    104 
    105     /**
    106      * Set by the accessibility layer to specify the magnification and panning to
    107      * be applied to all windows that should be magnified.
    108      *
    109      * @param spec The MagnficationSpec to set.
    110      *
    111      * @see #setMagnificationCallbacks(MagnificationCallbacks)
    112      */
    113     public abstract void setMagnificationSpec(MagnificationSpec spec);
    114 
    115     /**
    116      * Gets the magnification and translation applied to a window given its token.
    117      * Not all windows are magnified and the window manager policy determines which
    118      * windows are magnified. The returned result also takes into account the compat
    119      * scale if necessary.
    120      *
    121      * @param windowToken The window's token.
    122      *
    123      * @return The magnification spec for the window.
    124      *
    125      * @see #setMagnificationCallbacks(MagnificationCallbacks)
    126      */
    127     public abstract MagnificationSpec getCompatibleMagnificationSpecForWindow(
    128             IBinder windowToken);
    129 
    130     /**
    131      * Sets a callback for observing which windows are touchable for the purposes
    132      * of accessibility.
    133      *
    134      * @param callback The callback.
    135      */
    136     public abstract void setWindowsForAccessibilityCallback(
    137             WindowsForAccessibilityCallback callback);
    138 
    139     /**
    140      * Sets a filter for manipulating the input event stream.
    141      *
    142      * @param filter The filter implementation.
    143      */
    144     public abstract void setInputFilter(IInputFilter filter);
    145 
    146     /**
    147      * Gets the token of the window that has input focus.
    148      *
    149      * @return The token.
    150      */
    151     public abstract IBinder getFocusedWindowToken();
    152 
    153     /**
    154      * @return Whether the keyguard is engaged.
    155      */
    156     public abstract boolean isKeyguardLocked();
    157 
    158     /**
    159      * Gets the frame of a window given its token.
    160      *
    161      * @param token The token.
    162      * @param outBounds The frame to populate.
    163      */
    164     public abstract void getWindowFrame(IBinder token, Rect outBounds);
    165 
    166     /**
    167      * Opens the global actions dialog.
    168      */
    169     public abstract void showGlobalActions();
    170 
    171     /**
    172      * Invalidate all visible windows. Then report back on the callback once all windows have
    173      * redrawn.
    174      */
    175     public abstract void waitForAllWindowsDrawn(Runnable callback, long timeout);
    176 
    177     /**
    178      * Adds a window token for a given window type.
    179      *
    180      * @param token The token to add.
    181      * @param type The window type.
    182      */
    183     public abstract void addWindowToken(android.os.IBinder token, int type);
    184 
    185     /**
    186      * Removes a window token.
    187      *
    188      * @param token The toke to remove.
    189      * @param removeWindows Whether to also remove the windows associated with the token.
    190      */
    191     public abstract void removeWindowToken(android.os.IBinder token, boolean removeWindows);
    192 }
    193