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

Commit e6b7a7bc authored by Jerry Chang's avatar Jerry Chang
Browse files

Migrate splitscreen to WM shell lib (1/n)

To prepare for WM shell lib migration, extracts APIs from divider to
decouple dependency between systemui and divider logic. The Divider as
one of the SystemUI component holds DividerController and is in charge
of interacting with WM shell lib.

Bug: 161116823
Test: atest SystemUITests
Test: manual verified divider feature
Change-Id: I7e97599c369dd38b4b7da82fef53ab4de240f251
parent 5a63c659
Loading
Loading
Loading
Loading
+50 −474

File changed.

Preview size limit exceeded, changes collapsed.

+516 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import com.android.systemui.R;
/**
 * View for the handle in the docked stack divider.
 */
public class DividerHandleView extends View {
class DividerHandleView extends View {

    private final static Property<DividerHandleView, Integer> WIDTH_PROPERTY
            = new Property<DividerHandleView, Integer>(Integer.class, "width") {
+11 −8
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ import com.android.wm.shell.common.TransactionPool;

class DividerImeController implements DisplayImeController.ImePositionProcessor {
    private static final String TAG = "DividerImeController";
    private static final boolean DEBUG = Divider.DEBUG;
    private static final boolean DEBUG = DividerController.DEBUG;

    private static final float ADJUSTED_NONFOCUS_DIM = 0.3f;

@@ -100,15 +100,15 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
    }

    private DividerView getView() {
        return mSplits.mDivider.getView();
        return mSplits.mDividerController.getDividerView();
    }

    private SplitDisplayLayout getLayout() {
        return mSplits.mDivider.getSplitLayout();
        return mSplits.mDividerController.getSplitLayout();
    }

    private boolean isDividerVisible() {
        return mSplits.mDivider.isDividerVisible();
        return mSplits.mDividerController.isDividerVisible();
    }

    private boolean getSecondaryHasFocus(int displayId) {
@@ -151,7 +151,7 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
        mSecondaryHasFocus = getSecondaryHasFocus(displayId);
        final boolean targetAdjusted = splitIsVisible && imeShouldShow && mSecondaryHasFocus
                && !imeIsFloating && !getLayout().mDisplayLayout.isLandscape()
                && !mSplits.mDivider.isMinimized();
                && !mSplits.mDividerController.isMinimized();
        if (mLastAdjustTop < 0) {
            mLastAdjustTop = imeShouldShow ? hiddenTop : shownTop;
        } else if (mLastAdjustTop != (imeShouldShow ? mShownTop : mHiddenTop)) {
@@ -236,7 +236,7 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
                        SCREEN_WIDTH_DP_UNDEFINED, SCREEN_HEIGHT_DP_UNDEFINED);
            }

            if (!mSplits.mDivider.getWmProxy().queueSyncTransactionIfWaiting(wct)) {
            if (!mSplits.mDividerController.getWmProxy().queueSyncTransactionIfWaiting(wct)) {
                WindowOrganizer.applyTransaction(wct);
            }
        }
@@ -250,7 +250,7 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
                        : DisplayImeController.ANIMATION_DURATION_HIDE_MS);
            }
        }
        mSplits.mDivider.setAdjustedForIme(mTargetShown && !mPaused);
        mSplits.mDividerController.setAdjustedForIme(mTargetShown && !mPaused);
    }

    public void updateAdjustForIme() {
@@ -343,10 +343,12 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
        mAnimation.setInterpolator(DisplayImeController.INTERPOLATOR);
        mAnimation.addListener(new AnimatorListenerAdapter() {
            private boolean mCancel = false;

            @Override
            public void onAnimationCancel(Animator animation) {
                mCancel = true;
            }

            @Override
            public void onAnimationEnd(Animator animation) {
                SurfaceControl.Transaction t = mTransactionPool.acquire();
@@ -400,7 +402,8 @@ class DividerImeController implements DisplayImeController.ImePositionProcessor
            mTargetAdjusted = mPausedTargetAdjusted;
            updateDimTargets();
            final DividerView view = getView();
            if ((mTargetAdjusted != mAdjusted) && !mSplits.mDivider.isMinimized() && view != null) {
            if ((mTargetAdjusted != mAdjusted) && !mSplits.mDividerController.isMinimized()
                    && view != null) {
                // End unminimize animations since they conflict with adjustment animations.
                view.finishAnimations();
            }
+5 −2

File changed.

Preview size limit exceeded, changes collapsed.

Loading