summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2022-08-31 17:28:42 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-08-31 17:28:42 +0000
commit436d55bbce61c0536e70d28d018ab98a860f65ec (patch)
tree3d7ec36b7562d187f79e58806eb699435b7c1a1f
parent7d7364a41a5c1be845815583f6201b0acbb8cd87 (diff)
parent430e5706a28b6c01a9c6f47b993a76de8333a4c2 (diff)
Merge "Fix double call to ScreenshotController" into tm-qpr-dev am: b49f41145e am: 430e5706a2
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19775053 Change-Id: Ifd390961f61368434808625009bd00678629ba01 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt54
2 files changed, 47 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
index 35f32caffe21..695a80b2b95d 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
@@ -229,6 +229,7 @@ public class TakeScreenshotService extends Service {
Log.d(TAG, "handleMessage: Using request processor");
mProcessor.processAsync(request,
(r) -> dispatchToController(r, onSaved, callback));
+ return;
}
dispatchToController(request, onSaved, callback);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt
index 83e56daf1fbc..6ce9cff9a730 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt
@@ -40,6 +40,7 @@ import com.android.internal.util.ScreenshotHelper.ScreenshotRequest
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags.SCREENSHOT_REQUEST_PROCESSOR
+import com.android.systemui.flags.Flags.SCREENSHOT_WORK_PROFILE_POLICY
import com.android.systemui.screenshot.ScreenshotEvent.SCREENSHOT_REQUESTED_KEY_CHORD
import com.android.systemui.screenshot.ScreenshotEvent.SCREENSHOT_REQUESTED_OVERVIEW
import com.android.systemui.screenshot.TakeScreenshotService.RequestCallback
@@ -47,12 +48,15 @@ import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argThat
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.mock
+import java.util.function.Consumer
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.isNull
+import org.mockito.Mockito.doAnswer
+import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyZeroInteractions
import org.mockito.Mockito.`when` as whenever
@@ -88,7 +92,16 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
.thenReturn(false)
whenever(userManager.isUserUnlocked).thenReturn(true)
+ // Stub request processor as a synchronous no-op for tests with the flag enabled
+ doAnswer {
+ val request: ScreenshotRequest = it.getArgument(0) as ScreenshotRequest
+ val consumer: Consumer<ScreenshotRequest> = it.getArgument(1)
+ consumer.accept(request)
+ }.`when`(requestProcessor).processAsync(/* request= */ any(), /* callback= */ any())
+
+ // Flipped in selected test cases
flags.set(SCREENSHOT_REQUEST_PROCESSOR, false)
+ flags.set(SCREENSHOT_WORK_PROFILE_POLICY, false)
service.attach(
mContext,
@@ -105,10 +118,10 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
service.onBind(null /* unused: Intent */)
service.onUnbind(null /* unused: Intent */)
- verify(controller).removeWindow()
+ verify(controller, times(1)).removeWindow()
service.onDestroy()
- verify(controller).onDestroy()
+ verify(controller, times(1)).onDestroy()
}
@Test
@@ -120,7 +133,32 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
service.handleRequest(request, { /* onSaved */ }, callback)
- verify(controller).takeScreenshotFullscreen(
+ verify(controller, times(1)).takeScreenshotFullscreen(
+ eq(topComponent),
+ /* onSavedListener = */ any(),
+ /* requestCallback = */ any())
+
+ assertEquals("Expected one UiEvent", eventLogger.numLogs(), 1)
+ val logEvent = eventLogger.get(0)
+
+ assertEquals("Expected SCREENSHOT_REQUESTED UiEvent",
+ logEvent.eventId, SCREENSHOT_REQUESTED_KEY_CHORD.id)
+ assertEquals("Expected supplied package name",
+ topComponent.packageName, eventLogger.get(0).packageName)
+ }
+
+ @Test
+ fun takeScreenshot_requestProcessorEnabled() {
+ flags.set(SCREENSHOT_REQUEST_PROCESSOR, true)
+
+ val request = ScreenshotRequest(
+ TAKE_SCREENSHOT_FULLSCREEN,
+ SCREENSHOT_KEY_CHORD,
+ topComponent)
+
+ service.handleRequest(request, { /* onSaved */ }, callback)
+
+ verify(controller, times(1)).takeScreenshotFullscreen(
eq(topComponent),
/* onSavedListener = */ any(),
/* requestCallback = */ any())
@@ -143,7 +181,7 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
service.handleRequest(request, { /* onSaved */ }, callback)
- verify(controller).takeScreenshotPartial(
+ verify(controller, times(1)).takeScreenshotPartial(
/* topComponent = */ isNull(),
/* onSavedListener = */ any(),
/* requestCallback = */ any())
@@ -167,7 +205,7 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
service.handleRequest(request, { /* onSaved */ }, callback)
- verify(controller).handleImageAsScreenshot(
+ verify(controller, times(1)).handleImageAsScreenshot(
argThat { b -> b.equalsHardwareBitmap(bitmap) },
eq(bounds),
eq(Insets.NONE), eq(TASK_ID), eq(USER_ID), eq(topComponent),
@@ -193,8 +231,8 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
service.handleRequest(request, { /* onSaved */ }, callback)
- verify(notificationsController).notifyScreenshotError(anyInt())
- verify(callback).reportError()
+ verify(notificationsController, times(1)).notifyScreenshotError(anyInt())
+ verify(callback, times(1)).reportError()
verifyZeroInteractions(controller)
}
@@ -217,7 +255,7 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
service.handleRequest(request, { /* onSaved */ }, callback)
// error shown: Toast.makeText(...).show(), untestable
- verify(callback).reportError()
+ verify(callback, times(1)).reportError()
verifyZeroInteractions(controller)
}
}