Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropEventLogger.java +2 −1 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -64,6 +64,7 @@ public class DragAndDropEventLogger { mUiEventLogger.logWithInstanceId(getStartEnum(description), mActivityInfo.applicationInfo.uid, mActivityInfo.applicationInfo.packageName, mInstanceId); return mInstanceId; } /** Loading libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropPolicy.java +13 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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(); Loading Loading @@ -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(); Loading Loading @@ -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); } /** Loading Loading @@ -347,7 +357,7 @@ public class DragAndDropPolicy { } @Override public void exitSplitScreen() { public void exitSplitScreen(int exitTrigger) { throw new UnsupportedOperationException("exitSplitScreen not implemented by starter"); } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java +4 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropEventLogger.java +2 −1 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -64,6 +64,7 @@ public class DragAndDropEventLogger { mUiEventLogger.logWithInstanceId(getStartEnum(description), mActivityInfo.applicationInfo.uid, mActivityInfo.applicationInfo.packageName, mInstanceId); return mInstanceId; } /** Loading
libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropPolicy.java +13 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { Loading @@ -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(); Loading Loading @@ -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(); Loading Loading @@ -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); } /** Loading Loading @@ -347,7 +357,7 @@ public class DragAndDropPolicy { } @Override public void exitSplitScreen() { public void exitSplitScreen(int exitTrigger) { throw new UnsupportedOperationException("exitSplitScreen not implemented by starter"); } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java +4 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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