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

Commit 778f404a authored by Winson Chung's avatar Winson Chung
Browse files

Listen for overlay package changes to update the movement bounds

Change-Id: I90ba92b6b50d3e98e6745f8f90d5a02067133aed
Bug: 159908949
Test: Enter pip, change navigation mode, ensure bounds are right
parent 349fb412
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Size;
import android.util.TypedValue;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.Gravity;
import android.window.WindowContainerTransaction;
@@ -60,7 +61,7 @@ public class PipBoundsHandler {
    private final PipSnapAlgorithm mSnapAlgorithm;
    private final DisplayInfo mDisplayInfo = new DisplayInfo();
    private final DisplayController mDisplayController;
    private final DisplayLayout mDisplayLayout;
    private DisplayLayout mDisplayLayout;

    private ComponentName mLastPipComponentName;
    private float mReentrySnapFraction = INVALID_SNAP_FRACTION;
@@ -288,6 +289,10 @@ public class PipBoundsHandler {
        return mDefaultAspectRatio;
    }

    public void onOverlayChanged(Context context, Display display) {
        mDisplayLayout = new DisplayLayout(context, display);
    }

    /**
     * Updatest the display info and display layout on rotation change. This is needed even when we
     * aren't in PIP because the rotation layout is used to calculate the proper insets for the
+19 −1
Original line number Diff line number Diff line
@@ -53,10 +53,12 @@ import com.android.systemui.shared.system.InputConsumerController;
import com.android.systemui.shared.system.PinnedStackListenerForwarder.PinnedStackListener;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.system.WindowManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.FloatingContentCoordinator;
import com.android.systemui.wm.DisplayChangeController;
import com.android.systemui.wm.DisplayController;
import com.android.systemui.wm.DisplayLayout;

import java.io.PrintWriter;

@@ -234,6 +236,19 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
        }
    }

    public ConfigurationController.ConfigurationListener mOverlayChangedListener =
            new ConfigurationController.ConfigurationListener() {
        @Override
        public void onOverlayChanged() {
            mHandler.post(() -> {
                mPipBoundsHandler.onOverlayChanged(mContext, mContext.getDisplay());
                updateMovementBounds(null /* toBounds */,
                        false /* fromRotation */, false /* fromImeAdjustment */,
                        false /* fromShelfAdjustment */, null /* windowContainerTransaction */);
            });
        }
    };

    @Inject
    public PipManager(Context context, BroadcastDispatcher broadcastDispatcher,
            DisplayController displayController,
@@ -242,7 +257,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
            PipBoundsHandler pipBoundsHandler,
            PipSnapAlgorithm pipSnapAlgorithm,
            PipTaskOrganizer pipTaskOrganizer,
            SysUiState sysUiState) {
            SysUiState sysUiState,
            ConfigurationController configController) {
        mContext = context;
        mActivityManager = ActivityManager.getService();

@@ -275,6 +291,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
        context.getDisplay().getDisplayInfo(displayInfo);
        mPipBoundsHandler.onDisplayInfoChanged(displayInfo);

        configController.addCallback(mOverlayChangedListener);

        try {
            mPipTaskOrganizer.registerOrganizer(WINDOWING_MODE_PINNED);
            ActivityManager.StackInfo stackInfo = ActivityTaskManager.getService().getStackInfo(