Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java +4 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.windowdecor; import static android.view.WindowManager.TRANSIT_CHANGE; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.os.IBinder; Loading Loading @@ -178,10 +179,11 @@ class FluidResizeTaskPositioner implements DragPositioningCallback, for (TransitionInfo.Change change: info.getChanges()) { final SurfaceControl sc = change.getLeash(); final Rect endBounds = change.getEndAbsBounds(); final Point endPosition = change.getEndRelOffset(); startTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); finishTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); } startTransaction.apply(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositioner.java +4 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.windowdecor; import static android.view.WindowManager.TRANSIT_CHANGE; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.os.IBinder; Loading Loading @@ -179,10 +180,11 @@ public class VeiledResizeTaskPositioner implements DragPositioningCallback, for (TransitionInfo.Change change: info.getChanges()) { final SurfaceControl sc = change.getLeash(); final Rect endBounds = change.getEndAbsBounds(); final Point endPosition = change.getEndRelOffset(); startTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); finishTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); } startTransaction.apply(); Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositionerTest.kt +30 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.android.wm.shell.windowdecor import android.app.ActivityManager import android.app.WindowConfiguration import android.graphics.Point import android.graphics.Rect import android.os.IBinder import android.testing.AndroidTestingRunner Loading @@ -11,6 +12,7 @@ import android.view.Surface.ROTATION_270 import android.view.Surface.ROTATION_90 import android.view.SurfaceControl import android.view.WindowManager import android.window.TransitionInfo import android.window.WindowContainerToken import android.window.WindowContainerTransaction import android.window.WindowContainerTransaction.Change.CHANGE_DRAG_RESIZING Loading Loading @@ -41,6 +43,8 @@ import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations import org.mockito.kotlin.doReturn import java.util.function.Supplier import org.mockito.Mockito.eq import org.mockito.Mockito.mock import org.mockito.Mockito.`when` as whenever /** Loading Loading @@ -575,6 +579,32 @@ class FluidResizeTaskPositionerTest : ShellTestCase() { }) } @Test fun testStartAnimation_useEndRelOffset() { val mockTransitionInfo = mock(TransitionInfo::class.java) val changeMock = mock(TransitionInfo.Change::class.java) val startTransaction = mock(SurfaceControl.Transaction::class.java) val finishTransaction = mock(SurfaceControl.Transaction::class.java) val point = Point(10, 20) val bounds = Rect(1, 2, 3, 4) `when`(changeMock.endRelOffset).thenReturn(point) `when`(changeMock.endAbsBounds).thenReturn(bounds) `when`(mockTransitionInfo.changes).thenReturn(listOf(changeMock)) `when`(startTransaction.setWindowCrop(any(), eq(bounds.width()), eq(bounds.height()))).thenReturn(startTransaction) `when`(finishTransaction.setWindowCrop(any(), eq(bounds.width()), eq(bounds.height()))).thenReturn(finishTransaction) taskPositioner.startAnimation(mockTransitionBinder, mockTransitionInfo, startTransaction, finishTransaction, { _ -> }) verify(startTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(finishTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(changeMock).endRelOffset } private fun WindowContainerTransaction.Change.ofBounds(bounds: Rect): Boolean { return ((windowSetMask and WindowConfiguration.WINDOW_CONFIG_BOUNDS) != 0) && bounds == configuration.windowConfiguration.bounds Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositionerTest.kt +39 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.wm.shell.windowdecor import android.app.ActivityManager import android.app.WindowConfiguration import android.graphics.Point import android.graphics.Rect import android.os.IBinder import android.testing.AndroidTestingRunner Loading @@ -25,6 +26,7 @@ import android.view.Surface.ROTATION_0 import android.view.Surface.ROTATION_270 import android.view.Surface.ROTATION_90 import android.view.SurfaceControl import android.view.SurfaceControl.Transaction import android.view.WindowManager.TRANSIT_CHANGE import android.window.TransitionInfo import android.window.WindowContainerToken Loading @@ -39,6 +41,7 @@ import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_BOTTOM import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_RIGHT import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_TOP import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_UNDEFINED import java.util.function.Supplier import junit.framework.Assert import org.junit.Before import org.junit.Test Loading @@ -47,13 +50,13 @@ import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.argThat import org.mockito.Mockito.eq import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations import java.util.function.Supplier import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations /** * Tests for [VeiledResizeTaskPositioner]. Loading Loading @@ -439,6 +442,40 @@ class VeiledResizeTaskPositionerTest : ShellTestCase() { Assert.assertFalse(taskPositioner.isResizingOrAnimating) } @Test fun testStartAnimation_useEndRelOffset() { val changeMock = mock(TransitionInfo.Change::class.java) val startTransaction = mock(Transaction::class.java) val finishTransaction = mock(Transaction::class.java) val point = Point(10, 20) val bounds = Rect(1, 2, 3, 4) `when`(changeMock.endRelOffset).thenReturn(point) `when`(changeMock.endAbsBounds).thenReturn(bounds) `when`(mockTransitionInfo.changes).thenReturn(listOf(changeMock)) `when`(startTransaction.setWindowCrop( any(), eq(bounds.width()), eq(bounds.height()) )).thenReturn(startTransaction) `when`(finishTransaction.setWindowCrop( any(), eq(bounds.width()), eq(bounds.height()) )).thenReturn(finishTransaction) taskPositioner.startAnimation( mockTransitionBinder, mockTransitionInfo, startTransaction, finishTransaction, mockFinishCallback ) verify(startTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(finishTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(changeMock).endRelOffset } private fun performDrag( startX: Float, startY: Float, Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java +4 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.windowdecor; import static android.view.WindowManager.TRANSIT_CHANGE; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.os.IBinder; Loading Loading @@ -178,10 +179,11 @@ class FluidResizeTaskPositioner implements DragPositioningCallback, for (TransitionInfo.Change change: info.getChanges()) { final SurfaceControl sc = change.getLeash(); final Rect endBounds = change.getEndAbsBounds(); final Point endPosition = change.getEndRelOffset(); startTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); finishTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); } startTransaction.apply(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositioner.java +4 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.wm.shell.windowdecor; import static android.view.WindowManager.TRANSIT_CHANGE; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.os.IBinder; Loading Loading @@ -179,10 +180,11 @@ public class VeiledResizeTaskPositioner implements DragPositioningCallback, for (TransitionInfo.Change change: info.getChanges()) { final SurfaceControl sc = change.getLeash(); final Rect endBounds = change.getEndAbsBounds(); final Point endPosition = change.getEndRelOffset(); startTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); finishTransaction.setWindowCrop(sc, endBounds.width(), endBounds.height()) .setPosition(sc, endBounds.left, endBounds.top); .setPosition(sc, endPosition.x, endPosition.y); } startTransaction.apply(); Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositionerTest.kt +30 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.android.wm.shell.windowdecor import android.app.ActivityManager import android.app.WindowConfiguration import android.graphics.Point import android.graphics.Rect import android.os.IBinder import android.testing.AndroidTestingRunner Loading @@ -11,6 +12,7 @@ import android.view.Surface.ROTATION_270 import android.view.Surface.ROTATION_90 import android.view.SurfaceControl import android.view.WindowManager import android.window.TransitionInfo import android.window.WindowContainerToken import android.window.WindowContainerTransaction import android.window.WindowContainerTransaction.Change.CHANGE_DRAG_RESIZING Loading Loading @@ -41,6 +43,8 @@ import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations import org.mockito.kotlin.doReturn import java.util.function.Supplier import org.mockito.Mockito.eq import org.mockito.Mockito.mock import org.mockito.Mockito.`when` as whenever /** Loading Loading @@ -575,6 +579,32 @@ class FluidResizeTaskPositionerTest : ShellTestCase() { }) } @Test fun testStartAnimation_useEndRelOffset() { val mockTransitionInfo = mock(TransitionInfo::class.java) val changeMock = mock(TransitionInfo.Change::class.java) val startTransaction = mock(SurfaceControl.Transaction::class.java) val finishTransaction = mock(SurfaceControl.Transaction::class.java) val point = Point(10, 20) val bounds = Rect(1, 2, 3, 4) `when`(changeMock.endRelOffset).thenReturn(point) `when`(changeMock.endAbsBounds).thenReturn(bounds) `when`(mockTransitionInfo.changes).thenReturn(listOf(changeMock)) `when`(startTransaction.setWindowCrop(any(), eq(bounds.width()), eq(bounds.height()))).thenReturn(startTransaction) `when`(finishTransaction.setWindowCrop(any(), eq(bounds.width()), eq(bounds.height()))).thenReturn(finishTransaction) taskPositioner.startAnimation(mockTransitionBinder, mockTransitionInfo, startTransaction, finishTransaction, { _ -> }) verify(startTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(finishTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(changeMock).endRelOffset } private fun WindowContainerTransaction.Change.ofBounds(bounds: Rect): Boolean { return ((windowSetMask and WindowConfiguration.WINDOW_CONFIG_BOUNDS) != 0) && bounds == configuration.windowConfiguration.bounds Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/VeiledResizeTaskPositionerTest.kt +39 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.wm.shell.windowdecor import android.app.ActivityManager import android.app.WindowConfiguration import android.graphics.Point import android.graphics.Rect import android.os.IBinder import android.testing.AndroidTestingRunner Loading @@ -25,6 +26,7 @@ import android.view.Surface.ROTATION_0 import android.view.Surface.ROTATION_270 import android.view.Surface.ROTATION_90 import android.view.SurfaceControl import android.view.SurfaceControl.Transaction import android.view.WindowManager.TRANSIT_CHANGE import android.window.TransitionInfo import android.window.WindowContainerToken Loading @@ -39,6 +41,7 @@ import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_BOTTOM import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_RIGHT import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_TOP import com.android.wm.shell.windowdecor.DragPositioningCallback.CTRL_TYPE_UNDEFINED import java.util.function.Supplier import junit.framework.Assert import org.junit.Before import org.junit.Test Loading @@ -47,13 +50,13 @@ import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.argThat import org.mockito.Mockito.eq import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations import java.util.function.Supplier import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations /** * Tests for [VeiledResizeTaskPositioner]. Loading Loading @@ -439,6 +442,40 @@ class VeiledResizeTaskPositionerTest : ShellTestCase() { Assert.assertFalse(taskPositioner.isResizingOrAnimating) } @Test fun testStartAnimation_useEndRelOffset() { val changeMock = mock(TransitionInfo.Change::class.java) val startTransaction = mock(Transaction::class.java) val finishTransaction = mock(Transaction::class.java) val point = Point(10, 20) val bounds = Rect(1, 2, 3, 4) `when`(changeMock.endRelOffset).thenReturn(point) `when`(changeMock.endAbsBounds).thenReturn(bounds) `when`(mockTransitionInfo.changes).thenReturn(listOf(changeMock)) `when`(startTransaction.setWindowCrop( any(), eq(bounds.width()), eq(bounds.height()) )).thenReturn(startTransaction) `when`(finishTransaction.setWindowCrop( any(), eq(bounds.width()), eq(bounds.height()) )).thenReturn(finishTransaction) taskPositioner.startAnimation( mockTransitionBinder, mockTransitionInfo, startTransaction, finishTransaction, mockFinishCallback ) verify(startTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(finishTransaction).setPosition(any(), eq(point.x.toFloat()), eq(point.y.toFloat())) verify(changeMock).endRelOffset } private fun performDrag( startX: Float, startY: Float, Loading