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

Commit 89c94f0a authored by Winson Chung's avatar Winson Chung
Browse files

Force update the disable flags following status bar registration

- CentralSurfacesImpl currently takes a long time to initialize, so in
  between registration and updating CommandQueue with the registered
  bar's disabled flags, the service may already have updated its
  disabled state.  This state would have already come into CommandQueue
  but would be clobbered by CSI in the post-init task.

  Since there are some legacy constraints in ordering of the
  initialization, we'll unblock the tests by forcing a disable flag
  update following the update to CommandQueue with the previous disabled
  flags.  We can later investigate applying the returned flags earlier
  in the cycle, or add a mechanism to skip apply the registered disable
  flags if they were updated mid-init.

Bug: 260615374
Test: atest WMShellFlickerTests:com.android.wm.shell.flicker.splitscreen.CopyContentInSplit
Change-Id: I98943292ecab5cdc693149f417e5c4e8af137d1d
parent bd24d074
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.phone;

import static android.app.StatusBarManager.DISABLE_HOME;
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
import static android.app.StatusBarManager.WindowVisibleState;
@@ -70,6 +71,7 @@ import android.graphics.Point;
import android.hardware.devicestate.DeviceStateManager;
import android.metrics.LogMaker;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -1047,8 +1049,21 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
        // set the initial view visibility
        int disabledFlags1 = result.mDisabledFlags1;
        int disabledFlags2 = result.mDisabledFlags2;
        mInitController.addPostInitTask(
                () -> setUpDisableFlags(disabledFlags1, disabledFlags2));
        mInitController.addPostInitTask(() -> {
            setUpDisableFlags(disabledFlags1, disabledFlags2);
            try {
                // NOTE(b/262059863): Force-update the disable flags after applying the flags
                // returned from registerStatusBar(). The result's disabled flags may be stale
                // if StatusBarManager's disabled flags are updated between registering the bar and
                // this handling this post-init task. We force an update in this case, and use a new
                // token to not conflict with any other disabled flags already requested by SysUI
                Binder token = new Binder();
                mBarService.disable(DISABLE_HOME, token, mContext.getPackageName());
                mBarService.disable(0, token, mContext.getPackageName());
            } catch (RemoteException ex) {
                ex.rethrowFromSystemServer();
            }
        });

        mFalsingManager.addFalsingBeliefListener(mFalsingBeliefListener);