summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotController.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java21
2 files changed, 24 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index 456068c788b7..3182a7243e7f 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -281,7 +281,8 @@ class TaskSnapshotController {
*
* @return true if the state of the task is ok to proceed
*/
- private boolean prepareTaskSnapshot(Task task, float scaleFraction, int pixelFormat,
+ @VisibleForTesting
+ boolean prepareTaskSnapshot(Task task, float scaleFraction, int pixelFormat,
TaskSnapshot.Builder builder) {
if (!mService.mPolicy.isScreenOn()) {
if (DEBUG_SCREENSHOT) {
@@ -339,6 +340,7 @@ class TaskSnapshotController {
&& (!activity.fillsParent() || isWindowTranslucent);
builder.setTopActivityComponent(activity.mActivityComponent);
+ builder.setPixelFormat(pixelFormat);
builder.setIsTranslucent(isTranslucent);
builder.setOrientation(activity.getTask().getConfiguration().orientation);
builder.setWindowingMode(task.getWindowingMode());
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java
index e17e0d87994c..8fe0cdbbd872 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotControllerTest.java
@@ -19,10 +19,13 @@ package com.android.server.wm;
import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW;
import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.wm.TaskSnapshotController.SNAPSHOT_MODE_APP_THEME;
import static com.android.server.wm.TaskSnapshotController.SNAPSHOT_MODE_REAL;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@@ -175,4 +178,22 @@ public class TaskSnapshotControllerTest extends WindowTestsBase {
}
}
}
+
+ @Test
+ public void testPrepareTaskSnapshot() {
+ mAppWindow.mWinAnimator.mLastAlpha = 1f;
+ spyOn(mAppWindow.mWinAnimator);
+ doReturn(true).when(mAppWindow.mWinAnimator).getShown();
+ doReturn(true).when(mAppWindow.mActivityRecord).isSurfaceShowing();
+
+ final ActivityManager.TaskSnapshot.Builder builder =
+ new ActivityManager.TaskSnapshot.Builder();
+ final float scaleFraction = 0.8f;
+ mWm.mTaskSnapshotController.prepareTaskSnapshot(mAppWindow.mActivityRecord.getTask(),
+ scaleFraction, PixelFormat.UNKNOWN, builder);
+
+ assertEquals(scaleFraction, builder.getScaleFraction(), 0 /* delta */);
+ // The pixel format should be selected automatically.
+ assertNotEquals(PixelFormat.UNKNOWN, builder.getPixelFormat());
+ }
}