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

Commit 99efe552 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Add logging for splitscreen" into sc-v2-dev

parents 52ef77fa 1c61be35
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -158,6 +158,15 @@ public final class SplitLayout {
        return mDividePosition;
    }

    /**
     * Returns the divider position as a fraction from 0 to 1.
     */
    public float getDividerPositionAsFraction() {
        return Math.min(1f, Math.max(0f, isLandscape()
                ? (float) ((mBounds1.right + mBounds2.left) / 2f) / mBounds2.right
                : (float) ((mBounds1.bottom + mBounds2.top) / 2f) / mBounds2.bottom));
    }

    /** Applies new configuration, returns {@code false} if there's no effect to the layout. */
    public boolean updateConfiguration(Configuration configuration) {
        boolean affectsLayout = false;
@@ -342,6 +351,13 @@ public final class SplitLayout {
        return bounds.width() > bounds.height();
    }

    /**
     * Return if this layout is landscape.
     */
    public boolean isLandscape() {
        return isLandscape(mRootBounds);
    }

    /** Apply recorded surface layout to the {@link SurfaceControl.Transaction}. */
    public void applySurfaceChanges(SurfaceControl.Transaction t, SurfaceControl leash1,
            SurfaceControl leash2, SurfaceControl dimLayer1, SurfaceControl dimLayer2) {
+3 −2
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;

import com.android.internal.logging.InstanceId;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.protolog.common.ProtoLog;
import com.android.wm.shell.R;
@@ -180,11 +181,11 @@ public class DragAndDropController implements DisplayController.OnDisplaysChange
                    Slog.w(TAG, "Unexpected drag start during an active drag");
                    return false;
                }
                InstanceId loggerSessionId = mLogger.logStart(event);
                pd.activeDragCount++;
                pd.dragLayout.prepare(mDisplayController.getDisplayLayout(displayId),
                        event.getClipData());
                        event.getClipData(), loggerSessionId);
                setDropTargetWindowVisibility(pd, View.VISIBLE);
                mLogger.logStart(event);
                break;
            case ACTION_DRAG_ENTERED:
                pd.dragLayout.show();
+2 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ public class DragAndDropEventLogger {
    /**
     * Logs the start of a drag.
     */
    public void logStart(DragEvent event) {
    public InstanceId logStart(DragEvent event) {
        final ClipDescription description = event.getClipDescription();
        final ClipData data = event.getClipData();
        final ClipData.Item item = data.getItemAt(0);
@@ -64,6 +64,7 @@ public class DragAndDropEventLogger {
        mUiEventLogger.logWithInstanceId(getStartEnum(description),
                mActivityInfo.applicationInfo.uid,
                mActivityInfo.applicationInfo.packageName, mInstanceId);
        return mInstanceId;
    }

    /**
+13 −3
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;

import com.android.internal.logging.InstanceId;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.split.SplitLayout.SplitPosition;
import com.android.wm.shell.splitscreen.SplitScreen.StageType;
@@ -86,6 +87,7 @@ public class DragAndDropPolicy {
    private final SplitScreenController mSplitScreen;
    private final ArrayList<DragAndDropPolicy.Target> mTargets = new ArrayList<>();

    private InstanceId mLoggerSessionId;
    private DragSession mSession;

    public DragAndDropPolicy(Context context, SplitScreenController splitScreen) {
@@ -104,7 +106,8 @@ public class DragAndDropPolicy {
    /**
     * Starts a new drag session with the given initial drag data.
     */
    void start(DisplayLayout displayLayout, ClipData data) {
    void start(DisplayLayout displayLayout, ClipData data, InstanceId loggerSessionId) {
        mLoggerSessionId = loggerSessionId;
        mSession = new DragSession(mContext, mActivityTaskManager, displayLayout, data);
        // TODO(b/169894807): Also update the session data with task stack changes
        mSession.update();
@@ -207,6 +210,8 @@ public class DragAndDropPolicy {
                // Launch in the side stage if we are not in split-screen already.
                stage = STAGE_TYPE_SIDE;
            }
            // Add some data for logging splitscreen once it is invoked
            mSplitScreen.logOnDroppedToSplit(position, mLoggerSessionId);
        }

        final ClipDescription description = data.getDescription();
@@ -294,7 +299,12 @@ public class DragAndDropPolicy {
                @StageType int stage, @SplitPosition int position,
                @Nullable Bundle options);
        void enterSplitScreen(int taskId, boolean leftOrTop);
        void exitSplitScreen();

        /**
         * Exits splitscreen, with an associated exit trigger from the SplitscreenUIChanged proto
         * for logging.
         */
        void exitSplitScreen(int exitTrigger);
    }

    /**
@@ -347,7 +357,7 @@ public class DragAndDropPolicy {
        }

        @Override
        public void exitSplitScreen() {
        public void exitSplitScreen(int exitTrigger) {
            throw new UnsupportedOperationException("exitSplitScreen not implemented by starter");
        }
    }
+4 −2
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.view.WindowInsets.Type;

import androidx.annotation.NonNull;

import com.android.internal.logging.InstanceId;
import com.android.internal.protolog.common.ProtoLog;
import com.android.wm.shell.R;
import com.android.wm.shell.common.DisplayLayout;
@@ -98,8 +99,9 @@ public class DragLayout extends View {
        return mHasDropped;
    }

    public void prepare(DisplayLayout displayLayout, ClipData initialData) {
        mPolicy.start(displayLayout, initialData);
    public void prepare(DisplayLayout displayLayout, ClipData initialData,
            InstanceId loggerSessionId) {
        mPolicy.start(displayLayout, initialData, loggerSessionId);
        mHasDropped = false;
        mCurrentTarget = null;
    }
Loading