Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b94c952 authored by An An Yu's avatar An An Yu Committed by Automerger Merge Worker
Browse files

Merge "add @Override for addWindowLayoutInfoListener(context) and update...

Merge "add @Override for addWindowLayoutInfoListener(context) and update prebuilts." into tm-qpr-dev am: 112fa537

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19793471



Change-Id: I0c58e847e0fa761852fd17f7d4f670bf5eb8f9cc
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 955671b1 112fa537
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -103,14 +103,23 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
    /**
     * Similar to {@link #addWindowLayoutInfoListener(Activity, Consumer)}, but takes a UI Context
     * as a parameter.
     *
     * Jetpack {@link androidx.window.layout.ExtensionWindowLayoutInfoBackend} makes sure all
     * consumers related to the same {@link Context} gets updated {@link WindowLayoutInfo}
     * together. However only the first registered consumer of a {@link Context} will actually
     * invoke {@link #addWindowLayoutInfoListener(Context, Consumer)}.
     * Here we enforce that {@link #addWindowLayoutInfoListener(Context, Consumer)} can only be
     * called once for each {@link Context}.
     */
    // TODO(b/204073440): Add @Override to hook the API in WM extensions library.
    @Override
    public void addWindowLayoutInfoListener(@NonNull @UiContext Context context,
            @NonNull Consumer<WindowLayoutInfo> consumer) {
        if (mWindowLayoutChangeListeners.containsKey(context)
                // In theory this method can be called on the same consumer with different context.
                || mWindowLayoutChangeListeners.containsValue(consumer)) {
            // Early return if the listener or consumer has been registered.
            return;
            throw new IllegalArgumentException(
                    "Context or Consumer has already been registered for WindowLayoutInfo"
                            + " callback.");
        }
        if (!context.isUiContext()) {
            throw new IllegalArgumentException("Context must be a UI Context, which should be"