Home | History | Annotate | Download | only in view
      1 /**
      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
     14  * limitations under the License.
     15  */
     16 
     17 package android.view;
     18 
     19 import android.content.pm.ParceledListSlice;
     20 import android.graphics.Rect;
     21 import android.view.IPinnedStackController;
     22 
     23 /**
     24  * Listener for changes to the pinned stack made by the WindowManager.
     25  *
     26  * @hide
     27  */
     28 oneway interface IPinnedStackListener {
     29 
     30     /**
     31      * Called when the listener is registered and provides an interface to call back to the pinned
     32      * stack controller to update the controller of the pinned stack state.
     33      */
     34     void onListenerRegistered(IPinnedStackController controller);
     35 
     36     /**
     37      * Called when the window manager has detected a change that would cause the movement bounds
     38      * to be changed (ie. after configuration change, aspect ratio change, etc). It then provides
     39      * the components that allow the listener to calculate the movement bounds itself. The
     40      * {@param normalBounds} are also the default bounds that the PiP would be entered in its
     41      * current state with the aspect ratio applied.  The {@param animatingBounds} are provided
     42      * to indicate the current target bounds of the pinned stack (the final bounds if animating,
     43      * the current bounds if not), which may be helpful in calculating dependent animation bounds.
     44      *
     45      * The {@param displayRotation} is provided so that the client can verify when making certain
     46      * calls that it will not provide stale information based on an old display rotation (ie. if
     47      * the WM has changed in the mean time but the client has not received onMovementBoundsChanged).
     48      */
     49     void onMovementBoundsChanged(in Rect insetBounds, in Rect normalBounds, in Rect animatingBounds,
     50             boolean fromImeAdjustment, boolean fromShelfAdjustment, int displayRotation);
     51 
     52     /**
     53      * Called when window manager decides to adjust the pinned stack bounds because of the IME, or
     54      * when the listener is first registered to allow the listener to synchronized its state with
     55      * the controller.  This call will always be followed by a onMovementBoundsChanged() call
     56      * with fromImeAdjustement set to {@code true}.
     57      */
     58     void onImeVisibilityChanged(boolean imeVisible, int imeHeight);
     59 
     60     /**
     61      * Called when window manager decides to adjust the pinned stack bounds because of the shelf, or
     62      * when the listener is first registered to allow the listener to synchronized its state with
     63      * the controller.  This call will always be followed by a onMovementBoundsChanged() call
     64      * with fromShelfAdjustment set to {@code true}.
     65      */
     66     void onShelfVisibilityChanged(boolean shelfVisible, int shelfHeight);
     67 
     68     /**
     69      * Called when window manager decides to adjust the minimized state, or when the listener
     70      * is first registered to allow the listener to synchronized its state with the controller.
     71      */
     72     void onMinimizedStateChanged(boolean isMinimized);
     73 
     74     /**
     75      * Called when the set of actions for the current PiP activity changes, or when the listener
     76      * is first registered to allow the listener to synchronized its state with the controller.
     77      */
     78     void onActionsChanged(in ParceledListSlice actions);
     79 }
     80