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

Commit 0f3fc6d2 authored by Tiger Huang's avatar Tiger Huang Committed by Android (Google) Code Review
Browse files

Merge "Window Manager Flag Migration (5/n)"

parents 3182e6a5 0dbd5376
Loading
Loading
Loading
Loading
+0 −19
Original line number Diff line number Diff line
@@ -38,25 +38,6 @@ oneway interface IStatusBar

    void showWirelessChargingAnimation(int batteryLevel);

    /**
     * Notifies System UI side of a visibility flag change on the specified display.
     *
     * @param displayId the id of the display to notify
     * @param vis the visibility flags except SYSTEM_UI_FLAG_LIGHT_STATUS_BAR which will be reported
     *            separately in fullscreenStackVis and dockedStackVis
     * @param fullscreenStackVis the flags which only apply in the region of the fullscreen stack,
     *                           which is currently only SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
     * @param dockedStackVis the flags that only apply in the region of the docked stack, which is
     *                       currently only SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
     * @param mask which flags to change
     * @param fullscreenBounds the current bounds of the fullscreen stack, in screen coordinates
     * @param dockedBounds the current bounds of the docked stack, in screen coordinates
     * @param navbarColorManagedByIme {@code true} if navigation bar color is managed by IME.
     */
    void setSystemUiVisibility(int displayId, int vis, int fullscreenStackVis, int dockedStackVis,
            int mask, in Rect fullscreenBounds, in Rect dockedBounds,
            boolean navbarColorManagedByIme);

    void topAppWindowChanged(int displayId, boolean isFullscreen, boolean isImmersive);
    void setImeWindowStatus(int displayId, in IBinder token, int vis, int backDisposition,
            boolean showImeSwitcher, boolean isMultiClientImeEnabled);
+0 −1
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@ interface IStatusBarService
    void onNotificationSmartReplySent(in String key, in int replyIndex, in CharSequence reply,
            in int notificationLocation, boolean modifiedBeforeSending);
    void onNotificationSettingsViewed(String key);
    void setSystemUiVisibility(int displayId, int vis, int mask, String cause);
    void onNotificationBubbleChanged(String key, boolean isBubble);
    void grantInlineReplyUriPermission(String key, in Uri uri, in UserHandle user, String packageName);
    void clearInlineReplyUriPermissions(String key);
+29 −36
Original line number Diff line number Diff line
@@ -16,53 +16,50 @@

package com.android.internal.statusbar;

import android.graphics.Rect;
import android.annotation.NonNull;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArrayMap;

import com.android.internal.view.AppearanceRegion;

/**
 * An immutable data object to return a set of values from StatusBarManagerService to its clients.
 */
public final class RegisterStatusBarResult implements Parcelable {
    public final ArrayMap<String, StatusBarIcon> mIcons;
    public final int mDisabledFlags1;                   // switch[0]
    public final int mSystemUiVisibility;              // switch[1]
    public final int mAppearance;                       // switch[1]
    public final AppearanceRegion[] mAppearanceRegions; // switch[2]
    public final int mImeWindowVis;                     // switch[3]
    public final int mImeBackDisposition;               // switch[4]
    public final boolean mShowImeSwitcher;              // switch[5]
    public final int mDisabledFlags2;                   // switch[6]
    public final int mFullscreenStackSysUiVisibility;  // switch[7]
    public final int mDockedStackSysUiVisibility;      // switch[8]
    public final IBinder mImeToken;
    public final Rect mFullscreenStackBounds;
    public final Rect mDockedStackBounds;
    public final boolean mNavbarColorManagedByIme;
    public final boolean mAppFullscreen;
    public final boolean mAppImmersive;
    public final int[] mTransientBarTypes;

    public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1,
            int systemUiVisibility, int imeWindowVis, int imeBackDisposition,
            boolean showImeSwitcher, int disabledFlags2, int fullscreenStackSysUiVisibility,
            int dockedStackSysUiVisibility, IBinder imeToken, Rect fullscreenStackBounds,
            Rect dockedStackBounds, boolean navbarColorManagedByIme, boolean appFullscreen,
            boolean appImmersive) {
            int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis,
            int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken,
            boolean navbarColorManagedByIme, boolean appFullscreen, boolean appImmersive,
            @NonNull int[] transientBarTypes) {
        mIcons = new ArrayMap<>(icons);
        mDisabledFlags1 = disabledFlags1;
        mSystemUiVisibility = systemUiVisibility;
        mAppearance = appearance;
        mAppearanceRegions = appearanceRegions;
        mImeWindowVis = imeWindowVis;
        mImeBackDisposition = imeBackDisposition;
        mShowImeSwitcher = showImeSwitcher;
        mDisabledFlags2 = disabledFlags2;
        mFullscreenStackSysUiVisibility = fullscreenStackSysUiVisibility;
        mDockedStackSysUiVisibility = dockedStackSysUiVisibility;
        mImeToken = imeToken;
        mFullscreenStackBounds = fullscreenStackBounds;
        mDockedStackBounds = dockedStackBounds;
        mNavbarColorManagedByIme = navbarColorManagedByIme;
        mAppFullscreen = appFullscreen;
        mAppImmersive = appImmersive;
        mTransientBarTypes = transientBarTypes;
    }

    @Override
@@ -74,19 +71,17 @@ public final class RegisterStatusBarResult implements Parcelable {
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeTypedArrayMap(mIcons, flags);
        dest.writeInt(mDisabledFlags1);
        dest.writeInt(mSystemUiVisibility);
        dest.writeInt(mAppearance);
        dest.writeParcelableArray(mAppearanceRegions, 0);
        dest.writeInt(mImeWindowVis);
        dest.writeInt(mImeBackDisposition);
        dest.writeBoolean(mShowImeSwitcher);
        dest.writeInt(mDisabledFlags2);
        dest.writeInt(mFullscreenStackSysUiVisibility);
        dest.writeInt(mDockedStackSysUiVisibility);
        dest.writeStrongBinder(mImeToken);
        dest.writeTypedObject(mFullscreenStackBounds, flags);
        dest.writeTypedObject(mDockedStackBounds, flags);
        dest.writeBoolean(mNavbarColorManagedByIme);
        dest.writeBoolean(mAppFullscreen);
        dest.writeBoolean(mAppImmersive);
        dest.writeIntArray(mTransientBarTypes);
    }

    /**
@@ -99,24 +94,22 @@ public final class RegisterStatusBarResult implements Parcelable {
                    final ArrayMap<String, StatusBarIcon> icons =
                            source.createTypedArrayMap(StatusBarIcon.CREATOR);
                    final int disabledFlags1 = source.readInt();
                    final int systemUiVisibility = source.readInt();
                    final int appearance = source.readInt();
                    final AppearanceRegion[] appearanceRegions =
                            source.readParcelableArray(null, AppearanceRegion.class);
                    final int imeWindowVis = source.readInt();
                    final int imeBackDisposition = source.readInt();
                    final boolean showImeSwitcher = source.readBoolean();
                    final int disabledFlags2 = source.readInt();
                    final int fullscreenStackSysUiVisibility = source.readInt();
                    final int dockedStackSysUiVisibility = source.readInt();
                    final IBinder imeToken = source.readStrongBinder();
                    final Rect fullscreenStackBounds = source.readTypedObject(Rect.CREATOR);
                    final Rect dockedStackBounds = source.readTypedObject(Rect.CREATOR);
                    final boolean navbarColorManagedByIme = source.readBoolean();
                    final boolean appFullscreen = source.readBoolean();
                    final boolean appImmersive = source.readBoolean();
                    return new RegisterStatusBarResult(icons, disabledFlags1, systemUiVisibility,
                            imeWindowVis, imeBackDisposition, showImeSwitcher, disabledFlags2,
                            fullscreenStackSysUiVisibility, dockedStackSysUiVisibility, imeToken,
                            fullscreenStackBounds, dockedStackBounds, navbarColorManagedByIme,
                            appFullscreen, appImmersive);
                    final int[] transientBarTypes = source.createIntArray();
                    return new RegisterStatusBarResult(icons, disabledFlags1, appearance,
                            appearanceRegions, imeWindowVis, imeBackDisposition, showImeSwitcher,
                            disabledFlags2, imeToken, navbarColorManagedByIme, appFullscreen,
                            appImmersive, transientBarTypes);
                }

                @Override
+9 −14
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.internal.statusbar;

import static com.google.common.truth.Truth.assertThat;

import android.graphics.Rect;
import android.os.Binder;
import android.os.Parcel;
import android.os.UserHandle;
@@ -27,6 +26,8 @@ import android.util.ArrayMap;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.internal.view.AppearanceRegion;

import org.junit.Test;
import org.junit.runner.RunWith;

@@ -47,19 +48,17 @@ public class RegisterStatusBarResultTest {

        final RegisterStatusBarResult original = new RegisterStatusBarResult(iconMap,
                0x2 /* disabledFlags1 */,
                0x4 /* systemUiVisibility */,
                0x4 /* appearance */,
                new AppearanceRegion[0] /* appearanceRegions */,
                0x8 /* imeWindowVis */,
                0x10 /* imeBackDisposition */,
                false /* showImeSwitcher */,
                0x20 /* disabledFlags2 */,
                0x40 /* fullscreenStackSysUiVisibility */,
                0x80 /* dockedStackSysUiVisibility */,
                new Binder() /* imeToken */,
                new Rect(0x100, 0x200, 0x400, 0x800) /* fullscreenStackBounds */,
                new Rect(0x1000, 0x2000, 0x4000, 0x8000) /* dockedStackBounds */,
                true /* navbarColorManagedByIme */,
                true /* appFullscreen */,
                true /* appImmersive */);
                true /* appImmersive */,
                new int[0] /* transientBarTypes */);

        final RegisterStatusBarResult copy = clone(original);

@@ -69,21 +68,17 @@ public class RegisterStatusBarResultTest {
                .isEqualTo(original.mIcons.get(dumyIconKey).user);

        assertThat(copy.mDisabledFlags1).isEqualTo(original.mDisabledFlags1);
        assertThat(copy.mSystemUiVisibility).isEqualTo(original.mSystemUiVisibility);
        assertThat(copy.mAppearance).isEqualTo(original.mAppearance);
        assertThat(copy.mAppearanceRegions).isEqualTo(original.mAppearanceRegions);
        assertThat(copy.mImeWindowVis).isEqualTo(original.mImeWindowVis);
        assertThat(copy.mImeBackDisposition).isEqualTo(original.mImeBackDisposition);
        assertThat(copy.mShowImeSwitcher).isEqualTo(original.mShowImeSwitcher);
        assertThat(copy.mDisabledFlags2).isEqualTo(original.mDisabledFlags2);
        assertThat(copy.mFullscreenStackSysUiVisibility)
                .isEqualTo(original.mFullscreenStackSysUiVisibility);
        assertThat(copy.mDockedStackSysUiVisibility)
                .isEqualTo(original.mDockedStackSysUiVisibility);
        assertThat(copy.mImeToken).isSameAs(original.mImeToken);
        assertThat(copy.mFullscreenStackBounds).isEqualTo(original.mFullscreenStackBounds);
        assertThat(copy.mDockedStackBounds).isEqualTo(original.mDockedStackBounds);
        assertThat(copy.mNavbarColorManagedByIme).isEqualTo(original.mNavbarColorManagedByIme);
        assertThat(copy.mAppFullscreen).isEqualTo(original.mAppFullscreen);
        assertThat(copy.mAppImmersive).isEqualTo(original.mAppImmersive);
        assertThat(copy.mTransientBarTypes).isEqualTo(original.mTransientBarTypes);
    }

    private RegisterStatusBarResult clone(RegisterStatusBarResult original) {
+0 −41
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import static android.inputmethodservice.InputMethodService.BACK_DISPOSITION_DEF
import static android.inputmethodservice.InputMethodService.IME_INVISIBLE;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.InsetsState.TYPE_NAVIGATION_BAR;
import static android.view.InsetsState.TYPE_TOP_BAR;

import static com.android.systemui.statusbar.phone.StatusBar.ONLY_CORE_APPS;

@@ -34,7 +32,6 @@ import android.app.StatusBarManager.WindowType;
import android.app.StatusBarManager.WindowVisibleState;
import android.content.ComponentName;
import android.content.Context;
import android.graphics.Rect;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.display.DisplayManager;
import android.inputmethodservice.InputMethodService.BackDispositionMode;
@@ -45,9 +42,7 @@ import android.os.Looper;
import android.os.Message;
import android.util.Pair;
import android.util.SparseArray;
import android.view.InsetsFlags;
import android.view.InsetsState.InternalInsetType;
import android.view.View;
import android.view.WindowInsetsController.Appearance;

import com.android.internal.os.SomeArgs;
@@ -462,42 +457,6 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController<
        }
    }

    // TODO(b/118118435): Remove this function after migration
    @Override
    public void setSystemUiVisibility(int displayId, int vis, int fullscreenStackVis,
            int dockedStackVis, int mask, Rect fullscreenStackBounds, Rect dockedStackBounds,
            boolean navbarColorManagedByIme) {
        synchronized (mLock) {
            final boolean hasDockedStack = !dockedStackBounds.isEmpty();
            final boolean transientStatus = (vis & View.STATUS_BAR_TRANSIENT) != 0;
            final boolean transientNavigation = (vis & View.NAVIGATION_BAR_TRANSIENT) != 0;
            if (transientStatus && transientNavigation) {
                showTransient(displayId, new int[]{TYPE_TOP_BAR, TYPE_NAVIGATION_BAR});
            } else if (transientStatus) {
                showTransient(displayId, new int[]{TYPE_TOP_BAR});
                abortTransient(displayId, new int[]{TYPE_NAVIGATION_BAR});
            } else if (transientNavigation) {
                showTransient(displayId, new int[]{TYPE_NAVIGATION_BAR});
                abortTransient(displayId, new int[]{TYPE_TOP_BAR});
            } else {
                abortTransient(displayId, new int[]{TYPE_TOP_BAR, TYPE_NAVIGATION_BAR});
            }
            SomeArgs args = SomeArgs.obtain();
            args.argi1 = displayId;
            args.argi2 = InsetsFlags.getAppearance(vis);
            args.argi3 = navbarColorManagedByIme ? 1 : 0;
            final int fullscreenAppearance = InsetsFlags.getAppearance(fullscreenStackVis);
            final int dockedAppearance = InsetsFlags.getAppearance(dockedStackVis);
            args.arg1 = hasDockedStack
                    ? new AppearanceRegion[]{
                            new AppearanceRegion(fullscreenAppearance, fullscreenStackBounds),
                            new AppearanceRegion(dockedAppearance, dockedStackBounds)}
                    : new AppearanceRegion[]{
                            new AppearanceRegion(fullscreenAppearance, fullscreenStackBounds)};
            mHandler.obtainMessage(MSG_SYSTEM_BAR_APPEARANCE_CHANGED, args).sendToTarget();
        }
    }

    @Override
    public void topAppWindowChanged(int displayId, boolean isFullscreen, boolean isImmersive) {
        synchronized (mLock) {
Loading