Merge "Fix double call to ScreenshotController" into tm-qpr-dev am: b49f41145e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19775053 Change-Id: I22d88bdd8bb8c5bff9138579c82c711cc4f978bc Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -229,6 +229,7 @@ public class TakeScreenshotService extends Service {
|
|||||||
Log.d(TAG, "handleMessage: Using request processor");
|
Log.d(TAG, "handleMessage: Using request processor");
|
||||||
mProcessor.processAsync(request,
|
mProcessor.processAsync(request,
|
||||||
(r) -> dispatchToController(r, onSaved, callback));
|
(r) -> dispatchToController(r, onSaved, callback));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatchToController(request, onSaved, callback);
|
dispatchToController(request, onSaved, callback);
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import com.android.internal.util.ScreenshotHelper.ScreenshotRequest
|
|||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.flags.FakeFeatureFlags
|
import com.android.systemui.flags.FakeFeatureFlags
|
||||||
import com.android.systemui.flags.Flags.SCREENSHOT_REQUEST_PROCESSOR
|
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_KEY_CHORD
|
||||||
import com.android.systemui.screenshot.ScreenshotEvent.SCREENSHOT_REQUESTED_OVERVIEW
|
import com.android.systemui.screenshot.ScreenshotEvent.SCREENSHOT_REQUESTED_OVERVIEW
|
||||||
import com.android.systemui.screenshot.TakeScreenshotService.RequestCallback
|
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.argThat
|
||||||
import com.android.systemui.util.mockito.eq
|
import com.android.systemui.util.mockito.eq
|
||||||
import com.android.systemui.util.mockito.mock
|
import com.android.systemui.util.mockito.mock
|
||||||
|
import java.util.function.Consumer
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.ArgumentMatchers.anyInt
|
import org.mockito.ArgumentMatchers.anyInt
|
||||||
import org.mockito.ArgumentMatchers.isNull
|
import org.mockito.ArgumentMatchers.isNull
|
||||||
|
import org.mockito.Mockito.doAnswer
|
||||||
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.verifyZeroInteractions
|
import org.mockito.Mockito.verifyZeroInteractions
|
||||||
import org.mockito.Mockito.`when` as whenever
|
import org.mockito.Mockito.`when` as whenever
|
||||||
@@ -88,7 +92,16 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
.thenReturn(false)
|
.thenReturn(false)
|
||||||
whenever(userManager.isUserUnlocked).thenReturn(true)
|
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_REQUEST_PROCESSOR, false)
|
||||||
|
flags.set(SCREENSHOT_WORK_PROFILE_POLICY, false)
|
||||||
|
|
||||||
service.attach(
|
service.attach(
|
||||||
mContext,
|
mContext,
|
||||||
@@ -105,10 +118,10 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
service.onBind(null /* unused: Intent */)
|
service.onBind(null /* unused: Intent */)
|
||||||
|
|
||||||
service.onUnbind(null /* unused: Intent */)
|
service.onUnbind(null /* unused: Intent */)
|
||||||
verify(controller).removeWindow()
|
verify(controller, times(1)).removeWindow()
|
||||||
|
|
||||||
service.onDestroy()
|
service.onDestroy()
|
||||||
verify(controller).onDestroy()
|
verify(controller, times(1)).onDestroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -120,7 +133,32 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
|
|
||||||
service.handleRequest(request, { /* onSaved */ }, callback)
|
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),
|
eq(topComponent),
|
||||||
/* onSavedListener = */ any(),
|
/* onSavedListener = */ any(),
|
||||||
/* requestCallback = */ any())
|
/* requestCallback = */ any())
|
||||||
@@ -143,7 +181,7 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
|
|
||||||
service.handleRequest(request, { /* onSaved */ }, callback)
|
service.handleRequest(request, { /* onSaved */ }, callback)
|
||||||
|
|
||||||
verify(controller).takeScreenshotPartial(
|
verify(controller, times(1)).takeScreenshotPartial(
|
||||||
/* topComponent = */ isNull(),
|
/* topComponent = */ isNull(),
|
||||||
/* onSavedListener = */ any(),
|
/* onSavedListener = */ any(),
|
||||||
/* requestCallback = */ any())
|
/* requestCallback = */ any())
|
||||||
@@ -167,7 +205,7 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
|
|
||||||
service.handleRequest(request, { /* onSaved */ }, callback)
|
service.handleRequest(request, { /* onSaved */ }, callback)
|
||||||
|
|
||||||
verify(controller).handleImageAsScreenshot(
|
verify(controller, times(1)).handleImageAsScreenshot(
|
||||||
argThat { b -> b.equalsHardwareBitmap(bitmap) },
|
argThat { b -> b.equalsHardwareBitmap(bitmap) },
|
||||||
eq(bounds),
|
eq(bounds),
|
||||||
eq(Insets.NONE), eq(TASK_ID), eq(USER_ID), eq(topComponent),
|
eq(Insets.NONE), eq(TASK_ID), eq(USER_ID), eq(topComponent),
|
||||||
@@ -193,8 +231,8 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
|
|
||||||
service.handleRequest(request, { /* onSaved */ }, callback)
|
service.handleRequest(request, { /* onSaved */ }, callback)
|
||||||
|
|
||||||
verify(notificationsController).notifyScreenshotError(anyInt())
|
verify(notificationsController, times(1)).notifyScreenshotError(anyInt())
|
||||||
verify(callback).reportError()
|
verify(callback, times(1)).reportError()
|
||||||
verifyZeroInteractions(controller)
|
verifyZeroInteractions(controller)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +255,7 @@ class TakeScreenshotServiceTest : SysuiTestCase() {
|
|||||||
service.handleRequest(request, { /* onSaved */ }, callback)
|
service.handleRequest(request, { /* onSaved */ }, callback)
|
||||||
|
|
||||||
// error shown: Toast.makeText(...).show(), untestable
|
// error shown: Toast.makeText(...).show(), untestable
|
||||||
verify(callback).reportError()
|
verify(callback, times(1)).reportError()
|
||||||
verifyZeroInteractions(controller)
|
verifyZeroInteractions(controller)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user