diff options
3 files changed, 1 insertions, 150 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/RequestProcessor.kt b/packages/SystemUI/src/com/android/systemui/screenshot/RequestProcessor.kt index 98f2fee13de2..51540673b9e2 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/RequestProcessor.kt +++ b/packages/SystemUI/src/com/android/systemui/screenshot/RequestProcessor.kt @@ -16,10 +16,8 @@ package com.android.systemui.screenshot -import android.graphics.Insets import android.util.Log import android.view.WindowManager.TAKE_SCREENSHOT_PROVIDED_IMAGE -import com.android.internal.util.ScreenshotRequest import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.flags.FeatureFlags @@ -49,64 +47,6 @@ class RequestProcessor @Inject constructor( /** For the Java Async version, to invoke the callback. */ @Application private val mainScope: CoroutineScope ) : ScreenshotRequestProcessor { - /** - * Inspects the incoming request, returning a potentially modified request depending on policy. - * - * @param request the request to process - */ - // TODO: Delete once SCREENSHOT_METADATA flag is launched - suspend fun process(request: ScreenshotRequest): ScreenshotRequest { - var result = request - - // Apply work profile screenshots policy: - // - // If the focused app belongs to a work profile, transforms a full screen - // (or partial) screenshot request to a task snapshot (provided image) screenshot. - - // Whenever displayContentInfo is fetched, the topComponent is also populated - // regardless of the managed profile status. - - if (request.type != TAKE_SCREENSHOT_PROVIDED_IMAGE) { - val info = policy.findPrimaryContent(policy.getDefaultDisplayId()) - Log.d(TAG, "findPrimaryContent: $info") - - result = if (policy.isManagedProfile(info.user.identifier)) { - val image = capture.captureTask(info.taskId) - ?: error("Task snapshot returned a null Bitmap!") - - // Provide the task snapshot as the screenshot - ScreenshotRequest.Builder(TAKE_SCREENSHOT_PROVIDED_IMAGE, request.source) - .setTopComponent(info.component) - .setTaskId(info.taskId) - .setUserId(info.user.identifier) - .setBitmap(image) - .setBoundsOnScreen(info.bounds) - .setInsets(Insets.NONE) - .build() - } else { - // Create a new request of the same type which includes the top component - ScreenshotRequest.Builder(request.type, request.source) - .setTopComponent(info.component).build() - } - } - - return result - } - - /** - * Note: This is for compatibility with existing Java. Prefer the suspending function when - * calling from a Coroutine context. - * - * @param request the request to process - * @param callback the callback to provide the processed request, invoked from the main thread - */ - // TODO: Delete once SCREENSHOT_METADATA flag is launched - fun processAsync(request: ScreenshotRequest, callback: Consumer<ScreenshotRequest>) { - mainScope.launch { - val result = process(request) - callback.accept(result) - } - } override suspend fun process(screenshot: ScreenshotData): ScreenshotData { var result = screenshot diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/RequestProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/RequestProcessorTest.kt index 1e47f78d42d1..0d694ee80def 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/RequestProcessorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/RequestProcessorTest.kt @@ -51,30 +51,6 @@ class RequestProcessorTest { /** Tests the Java-compatible function wrapper, ensures callback is invoked. */ @Test - fun testProcessAsync() { - val request = - ScreenshotRequest.Builder(TAKE_SCREENSHOT_PROVIDED_IMAGE, SCREENSHOT_KEY_OTHER) - .setBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)) - .build() - val processor = RequestProcessor(imageCapture, policy, flags, scope) - - var result: ScreenshotRequest? = null - var callbackCount = 0 - val callback: (ScreenshotRequest) -> Unit = { processedRequest: ScreenshotRequest -> - result = processedRequest - callbackCount++ - } - - // runs synchronously, using Unconfined Dispatcher - processor.processAsync(request, callback) - - // Callback invoked once returning the same request (no changes) - assertThat(callbackCount).isEqualTo(1) - assertThat(result).isEqualTo(request) - } - - /** Tests the Java-compatible function wrapper, ensures callback is invoked. */ - @Test fun testProcessAsync_ScreenshotData() { val request = ScreenshotData.fromRequest( @@ -112,13 +88,6 @@ class RequestProcessorTest { ScreenshotRequest.Builder(TAKE_SCREENSHOT_FULLSCREEN, SCREENSHOT_OTHER).build() val processor = RequestProcessor(imageCapture, policy, flags, scope) - val processedRequest = processor.process(request) - - // Request has topComponent added, but otherwise unchanged. - assertThat(processedRequest.type).isEqualTo(TAKE_SCREENSHOT_FULLSCREEN) - assertThat(processedRequest.source).isEqualTo(SCREENSHOT_OTHER) - assertThat(processedRequest.topComponent).isEqualTo(component) - val processedData = processor.process(ScreenshotData.fromRequest(request)) // Request has topComponent added, but otherwise unchanged. @@ -144,18 +113,6 @@ class RequestProcessorTest { ScreenshotRequest.Builder(TAKE_SCREENSHOT_FULLSCREEN, SCREENSHOT_KEY_OTHER).build() val processor = RequestProcessor(imageCapture, policy, flags, scope) - val processedRequest = processor.process(request) - - // Expect a task snapshot is taken, overriding the full screen mode - assertThat(processedRequest.type).isEqualTo(TAKE_SCREENSHOT_PROVIDED_IMAGE) - assertThat(bitmap.equalsHardwareBitmap(processedRequest.bitmap)).isTrue() - assertThat(processedRequest.boundsInScreen).isEqualTo(bounds) - assertThat(processedRequest.insets).isEqualTo(Insets.NONE) - assertThat(processedRequest.taskId).isEqualTo(TASK_ID) - assertThat(imageCapture.requestedTaskId).isEqualTo(TASK_ID) - assertThat(processedRequest.userId).isEqualTo(USER_ID) - assertThat(processedRequest.topComponent).isEqualTo(component) - val processedData = processor.process(ScreenshotData.fromRequest(request)) // Expect a task snapshot is taken, overriding the full screen mode @@ -165,8 +122,6 @@ class RequestProcessorTest { assertThat(processedData.insets).isEqualTo(Insets.NONE) assertThat(processedData.taskId).isEqualTo(TASK_ID) assertThat(imageCapture.requestedTaskId).isEqualTo(TASK_ID) - assertThat(processedRequest.userId).isEqualTo(USER_ID) - assertThat(processedRequest.topComponent).isEqualTo(component) } @Test @@ -186,9 +141,6 @@ class RequestProcessorTest { val processor = RequestProcessor(imageCapture, policy, flags, scope) Assert.assertThrows(IllegalStateException::class.java) { - runBlocking { processor.process(request) } - } - Assert.assertThrows(IllegalStateException::class.java) { runBlocking { processor.process(ScreenshotData.fromRequest(request)) } } } @@ -212,11 +164,6 @@ class RequestProcessorTest { .setInsets(Insets.NONE) .build() - val processedRequest = processor.process(request) - - // No changes - assertThat(processedRequest).isEqualTo(request) - val screenshotData = ScreenshotData.fromRequest(request) val processedData = processor.process(screenshotData) @@ -243,14 +190,10 @@ class RequestProcessorTest { .setInsets(Insets.NONE) .build() - val processedRequest = processor.process(request) - - // Work profile, but already a task snapshot, so no changes - assertThat(processedRequest).isEqualTo(request) - val screenshotData = ScreenshotData.fromRequest(request) val processedData = processor.process(screenshotData) + // Work profile, but already a task snapshot, so no changes assertThat(processedData).isEqualTo(screenshotData) } 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 a08cda6ff158..6205d90197a2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt @@ -20,10 +20,6 @@ import android.app.admin.DevicePolicyManager import android.app.admin.DevicePolicyResources.Strings.SystemUi.SCREENSHOT_BLOCKED_BY_ADMIN import android.app.admin.DevicePolicyResourcesManager import android.content.ComponentName -import android.graphics.Bitmap -import android.graphics.Bitmap.Config.HARDWARE -import android.graphics.ColorSpace -import android.hardware.HardwareBuffer import android.os.UserHandle import android.os.UserManager import android.testing.AndroidTestingRunner @@ -94,14 +90,6 @@ class TakeScreenshotServiceTest : SysuiTestCase() { // 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) - } - .whenever(requestProcessor) - .processAsync(/* request= */ any(ScreenshotRequest::class.java), /* callback= */ any()) - - doAnswer { val request: ScreenshotData = it.getArgument(0) as ScreenshotData val consumer: Consumer<ScreenshotData> = it.getArgument(1) consumer.accept(request) @@ -353,23 +341,3 @@ class TakeScreenshotServiceTest : SysuiTestCase() { return service } } - -private fun Bitmap.equalsHardwareBitmap(other: Bitmap): Boolean { - return config == HARDWARE && - other.config == HARDWARE && - hardwareBuffer == other.hardwareBuffer && - colorSpace == other.colorSpace -} - -/** A hardware Bitmap is mandated by use of ScreenshotHelper.HardwareBitmapBundler */ -private fun makeHardwareBitmap(width: Int, height: Int): Bitmap { - val buffer = - HardwareBuffer.create( - width, - height, - HardwareBuffer.RGBA_8888, - 1, - HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE - ) - return Bitmap.wrapHardwareBuffer(buffer, ColorSpace.get(ColorSpace.Named.SRGB))!! -} |