Loading packages/SystemUI/src/com/android/systemui/screenshot/HeadlessScreenshotHandler.kt +6 −6 Original line number Original line Diff line number Diff line Loading @@ -49,7 +49,7 @@ constructor( override fun handleScreenshot( override fun handleScreenshot( screenshot: ScreenshotData, screenshot: ScreenshotData, finisher: Consumer<Uri?>, finisher: Consumer<Uri?>, requestCallback: TakeScreenshotService.RequestCallback requestCallback: TakeScreenshotService.RequestCallback, ) { ) { if (screenshot.type == WindowManager.TAKE_SCREENSHOT_FULLSCREEN) { if (screenshot.type == WindowManager.TAKE_SCREENSHOT_FULLSCREEN) { screenshot.bitmap = imageCapture.captureDisplay(screenshot.displayId, crop = null) screenshot.bitmap = imageCapture.captureDisplay(screenshot.displayId, crop = null) Loading @@ -69,8 +69,8 @@ constructor( Executors.newSingleThreadExecutor(), Executors.newSingleThreadExecutor(), UUID.randomUUID(), UUID.randomUUID(), screenshot.bitmap, screenshot.bitmap, screenshot.getUserOrDefault(), screenshot.userHandle, screenshot.displayId screenshot.displayId, ) ) future.addListener( future.addListener( { { Loading @@ -86,7 +86,7 @@ constructor( requestCallback.reportError() requestCallback.reportError() } } }, }, mainExecutor mainExecutor, ) ) } } Loading @@ -98,11 +98,11 @@ constructor( .notifyScreenshotError(R.string.screenshot_failed_to_save_text) .notifyScreenshotError(R.string.screenshot_failed_to_save_text) } else { } else { uiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, screenshot.packageNameString) uiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, screenshot.packageNameString) if (userManager.isManagedProfile(screenshot.getUserOrDefault().identifier)) { if (userManager.isManagedProfile(screenshot.userHandle.identifier)) { uiEventLogger.log( uiEventLogger.log( ScreenshotEvent.SCREENSHOT_SAVED_TO_WORK_PROFILE, ScreenshotEvent.SCREENSHOT_SAVED_TO_WORK_PROFILE, 0, 0, screenshot.packageNameString screenshot.packageNameString, ) ) } } } } Loading packages/SystemUI/src/com/android/systemui/screenshot/LegacyScreenshotController.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -301,7 +301,7 @@ public class LegacyScreenshotController implements InteractiveScreenshotHandler saveScreenshotInBackground(screenshot, requestId, finisher, result -> { saveScreenshotInBackground(screenshot, requestId, finisher, result -> { if (result.uri != null) { if (result.uri != null) { ScreenshotSavedResult savedScreenshot = new ScreenshotSavedResult( ScreenshotSavedResult savedScreenshot = new ScreenshotSavedResult( result.uri, screenshot.getUserOrDefault(), result.timestamp); result.uri, screenshot.getUserHandle(), result.timestamp); mActionsController.setCompletedScreenshot(requestId, savedScreenshot); mActionsController.setCompletedScreenshot(requestId, savedScreenshot); } } }); }); Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.kt +5 −9 Original line number Original line Diff line number Diff line Loading @@ -214,11 +214,7 @@ internal constructor( saveScreenshotInBackground(screenshot, requestId, finisher) { result -> saveScreenshotInBackground(screenshot, requestId, finisher) { result -> if (result.uri != null) { if (result.uri != null) { val savedScreenshot = val savedScreenshot = ScreenshotSavedResult( ScreenshotSavedResult(result.uri, screenshot.userHandle, result.timestamp) result.uri, screenshot.getUserOrDefault(), result.timestamp, ) actionsController.setCompletedScreenshot(requestId, savedScreenshot) actionsController.setCompletedScreenshot(requestId, savedScreenshot) } } } } Loading @@ -235,7 +231,7 @@ internal constructor( window.setFocusable(true) window.setFocusable(true) viewProxy.requestFocus() viewProxy.requestFocus() enqueueScrollCaptureRequest(requestId, screenshot.userHandle!!) enqueueScrollCaptureRequest(requestId, screenshot.userHandle) window.attachWindow() window.attachWindow() Loading Loading @@ -267,7 +263,7 @@ internal constructor( private fun prepareViewForNewScreenshot(screenshot: ScreenshotData, oldPackageName: String?) { private fun prepareViewForNewScreenshot(screenshot: ScreenshotData, oldPackageName: String?) { window.whenWindowAttached { window.whenWindowAttached { announcementResolver.getScreenshotAnnouncement(screenshot.userHandle!!.identifier) { announcementResolver.getScreenshotAnnouncement(screenshot.userHandle.identifier) { viewProxy.announceForAccessibility(it) viewProxy.announceForAccessibility(it) } } } } Loading Loading @@ -517,7 +513,7 @@ internal constructor( bgExecutor, bgExecutor, requestId, requestId, screenshot.bitmap, screenshot.bitmap, screenshot.getUserOrDefault(), screenshot.userHandle, display.displayId, display.displayId, ) ) future.addListener( future.addListener( Loading @@ -525,7 +521,7 @@ internal constructor( try { try { val result = future.get() val result = future.get() Log.d(TAG, "Saved screenshot: $result") Log.d(TAG, "Saved screenshot: $result") logScreenshotResultStatus(result.uri, screenshot.userHandle!!) logScreenshotResultStatus(result.uri, screenshot.userHandle) onResult.accept(result) onResult.accept(result) if (LogConfig.DEBUG_CALLBACK) { if (LogConfig.DEBUG_CALLBACK) { Log.d(TAG, "finished bg processing, calling back with uri: ${result.uri}") Log.d(TAG, "finished bg processing, calling back with uri: ${result.uri}") Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotData.kt +3 −3 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,7 @@ data class ScreenshotData( @ScreenshotType val type: Int, @ScreenshotType val type: Int, @ScreenshotSource val source: Int, @ScreenshotSource val source: Int, /** UserHandle for the owner of the app being screenshotted, if known. */ /** UserHandle for the owner of the app being screenshotted, if known. */ val userHandle: UserHandle?, val userHandle: UserHandle, /** ComponentName of the top-most app in the screenshot. */ /** ComponentName of the top-most app in the screenshot. */ val topComponent: ComponentName?, val topComponent: ComponentName?, var screenBounds: Rect?, var screenBounds: Rect?, Loading @@ -40,7 +40,7 @@ data class ScreenshotData( ScreenshotData( ScreenshotData( type = request.type, type = request.type, source = request.source, source = request.source, userHandle = if (request.userId >= 0) UserHandle.of(request.userId) else null, userHandle = UserHandle.of(request.userId), topComponent = request.topComponent, topComponent = request.topComponent, screenBounds = request.boundsInScreen, screenBounds = request.boundsInScreen, taskId = request.taskId, taskId = request.taskId, Loading @@ -51,7 +51,7 @@ data class ScreenshotData( @VisibleForTesting @VisibleForTesting fun forTesting( fun forTesting( userHandle: UserHandle? = null, userHandle: UserHandle = UserHandle.CURRENT, source: Int = ScreenshotSource.SCREENSHOT_KEY_CHORD, source: Int = ScreenshotSource.SCREENSHOT_KEY_CHORD, topComponent: ComponentName? = null, topComponent: ComponentName? = null, bitmap: Bitmap? = null, bitmap: Bitmap? = null, Loading packages/SystemUI/src/com/android/systemui/screenshot/policy/PolicyRequestProcessor.kt +4 −4 Original line number Original line Diff line number Diff line Loading @@ -92,7 +92,7 @@ class PolicyRequestProcessor( updates.component, updates.component, updates.owner, updates.owner, type.taskId, type.taskId, type.taskBounds type.taskBounds, ) ) is FullScreen -> is FullScreen -> replaceWithScreenshot( replaceWithScreenshot( Loading Loading @@ -122,7 +122,7 @@ class PolicyRequestProcessor( componentName = topMainRootTask?.topActivity ?: defaultComponent, componentName = topMainRootTask?.topActivity ?: defaultComponent, taskId = topMainRootTask?.taskId, taskId = topMainRootTask?.taskId, owner = defaultOwner, owner = defaultOwner, displayId = original.displayId displayId = original.displayId, ) ) } } Loading @@ -141,14 +141,14 @@ class PolicyRequestProcessor( userHandle = owner, userHandle = owner, taskId = taskId, taskId = taskId, topComponent = componentName, topComponent = componentName, screenBounds = taskBounds screenBounds = taskBounds, ) ) } } private suspend fun replaceWithScreenshot( private suspend fun replaceWithScreenshot( original: ScreenshotData, original: ScreenshotData, componentName: ComponentName?, componentName: ComponentName?, owner: UserHandle?, owner: UserHandle, displayId: Int, displayId: Int, taskId: Int? = null, taskId: Int? = null, ): ScreenshotData { ): ScreenshotData { Loading Loading
packages/SystemUI/src/com/android/systemui/screenshot/HeadlessScreenshotHandler.kt +6 −6 Original line number Original line Diff line number Diff line Loading @@ -49,7 +49,7 @@ constructor( override fun handleScreenshot( override fun handleScreenshot( screenshot: ScreenshotData, screenshot: ScreenshotData, finisher: Consumer<Uri?>, finisher: Consumer<Uri?>, requestCallback: TakeScreenshotService.RequestCallback requestCallback: TakeScreenshotService.RequestCallback, ) { ) { if (screenshot.type == WindowManager.TAKE_SCREENSHOT_FULLSCREEN) { if (screenshot.type == WindowManager.TAKE_SCREENSHOT_FULLSCREEN) { screenshot.bitmap = imageCapture.captureDisplay(screenshot.displayId, crop = null) screenshot.bitmap = imageCapture.captureDisplay(screenshot.displayId, crop = null) Loading @@ -69,8 +69,8 @@ constructor( Executors.newSingleThreadExecutor(), Executors.newSingleThreadExecutor(), UUID.randomUUID(), UUID.randomUUID(), screenshot.bitmap, screenshot.bitmap, screenshot.getUserOrDefault(), screenshot.userHandle, screenshot.displayId screenshot.displayId, ) ) future.addListener( future.addListener( { { Loading @@ -86,7 +86,7 @@ constructor( requestCallback.reportError() requestCallback.reportError() } } }, }, mainExecutor mainExecutor, ) ) } } Loading @@ -98,11 +98,11 @@ constructor( .notifyScreenshotError(R.string.screenshot_failed_to_save_text) .notifyScreenshotError(R.string.screenshot_failed_to_save_text) } else { } else { uiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, screenshot.packageNameString) uiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, screenshot.packageNameString) if (userManager.isManagedProfile(screenshot.getUserOrDefault().identifier)) { if (userManager.isManagedProfile(screenshot.userHandle.identifier)) { uiEventLogger.log( uiEventLogger.log( ScreenshotEvent.SCREENSHOT_SAVED_TO_WORK_PROFILE, ScreenshotEvent.SCREENSHOT_SAVED_TO_WORK_PROFILE, 0, 0, screenshot.packageNameString screenshot.packageNameString, ) ) } } } } Loading
packages/SystemUI/src/com/android/systemui/screenshot/LegacyScreenshotController.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -301,7 +301,7 @@ public class LegacyScreenshotController implements InteractiveScreenshotHandler saveScreenshotInBackground(screenshot, requestId, finisher, result -> { saveScreenshotInBackground(screenshot, requestId, finisher, result -> { if (result.uri != null) { if (result.uri != null) { ScreenshotSavedResult savedScreenshot = new ScreenshotSavedResult( ScreenshotSavedResult savedScreenshot = new ScreenshotSavedResult( result.uri, screenshot.getUserOrDefault(), result.timestamp); result.uri, screenshot.getUserHandle(), result.timestamp); mActionsController.setCompletedScreenshot(requestId, savedScreenshot); mActionsController.setCompletedScreenshot(requestId, savedScreenshot); } } }); }); Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.kt +5 −9 Original line number Original line Diff line number Diff line Loading @@ -214,11 +214,7 @@ internal constructor( saveScreenshotInBackground(screenshot, requestId, finisher) { result -> saveScreenshotInBackground(screenshot, requestId, finisher) { result -> if (result.uri != null) { if (result.uri != null) { val savedScreenshot = val savedScreenshot = ScreenshotSavedResult( ScreenshotSavedResult(result.uri, screenshot.userHandle, result.timestamp) result.uri, screenshot.getUserOrDefault(), result.timestamp, ) actionsController.setCompletedScreenshot(requestId, savedScreenshot) actionsController.setCompletedScreenshot(requestId, savedScreenshot) } } } } Loading @@ -235,7 +231,7 @@ internal constructor( window.setFocusable(true) window.setFocusable(true) viewProxy.requestFocus() viewProxy.requestFocus() enqueueScrollCaptureRequest(requestId, screenshot.userHandle!!) enqueueScrollCaptureRequest(requestId, screenshot.userHandle) window.attachWindow() window.attachWindow() Loading Loading @@ -267,7 +263,7 @@ internal constructor( private fun prepareViewForNewScreenshot(screenshot: ScreenshotData, oldPackageName: String?) { private fun prepareViewForNewScreenshot(screenshot: ScreenshotData, oldPackageName: String?) { window.whenWindowAttached { window.whenWindowAttached { announcementResolver.getScreenshotAnnouncement(screenshot.userHandle!!.identifier) { announcementResolver.getScreenshotAnnouncement(screenshot.userHandle.identifier) { viewProxy.announceForAccessibility(it) viewProxy.announceForAccessibility(it) } } } } Loading Loading @@ -517,7 +513,7 @@ internal constructor( bgExecutor, bgExecutor, requestId, requestId, screenshot.bitmap, screenshot.bitmap, screenshot.getUserOrDefault(), screenshot.userHandle, display.displayId, display.displayId, ) ) future.addListener( future.addListener( Loading @@ -525,7 +521,7 @@ internal constructor( try { try { val result = future.get() val result = future.get() Log.d(TAG, "Saved screenshot: $result") Log.d(TAG, "Saved screenshot: $result") logScreenshotResultStatus(result.uri, screenshot.userHandle!!) logScreenshotResultStatus(result.uri, screenshot.userHandle) onResult.accept(result) onResult.accept(result) if (LogConfig.DEBUG_CALLBACK) { if (LogConfig.DEBUG_CALLBACK) { Log.d(TAG, "finished bg processing, calling back with uri: ${result.uri}") Log.d(TAG, "finished bg processing, calling back with uri: ${result.uri}") Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotData.kt +3 −3 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,7 @@ data class ScreenshotData( @ScreenshotType val type: Int, @ScreenshotType val type: Int, @ScreenshotSource val source: Int, @ScreenshotSource val source: Int, /** UserHandle for the owner of the app being screenshotted, if known. */ /** UserHandle for the owner of the app being screenshotted, if known. */ val userHandle: UserHandle?, val userHandle: UserHandle, /** ComponentName of the top-most app in the screenshot. */ /** ComponentName of the top-most app in the screenshot. */ val topComponent: ComponentName?, val topComponent: ComponentName?, var screenBounds: Rect?, var screenBounds: Rect?, Loading @@ -40,7 +40,7 @@ data class ScreenshotData( ScreenshotData( ScreenshotData( type = request.type, type = request.type, source = request.source, source = request.source, userHandle = if (request.userId >= 0) UserHandle.of(request.userId) else null, userHandle = UserHandle.of(request.userId), topComponent = request.topComponent, topComponent = request.topComponent, screenBounds = request.boundsInScreen, screenBounds = request.boundsInScreen, taskId = request.taskId, taskId = request.taskId, Loading @@ -51,7 +51,7 @@ data class ScreenshotData( @VisibleForTesting @VisibleForTesting fun forTesting( fun forTesting( userHandle: UserHandle? = null, userHandle: UserHandle = UserHandle.CURRENT, source: Int = ScreenshotSource.SCREENSHOT_KEY_CHORD, source: Int = ScreenshotSource.SCREENSHOT_KEY_CHORD, topComponent: ComponentName? = null, topComponent: ComponentName? = null, bitmap: Bitmap? = null, bitmap: Bitmap? = null, Loading
packages/SystemUI/src/com/android/systemui/screenshot/policy/PolicyRequestProcessor.kt +4 −4 Original line number Original line Diff line number Diff line Loading @@ -92,7 +92,7 @@ class PolicyRequestProcessor( updates.component, updates.component, updates.owner, updates.owner, type.taskId, type.taskId, type.taskBounds type.taskBounds, ) ) is FullScreen -> is FullScreen -> replaceWithScreenshot( replaceWithScreenshot( Loading Loading @@ -122,7 +122,7 @@ class PolicyRequestProcessor( componentName = topMainRootTask?.topActivity ?: defaultComponent, componentName = topMainRootTask?.topActivity ?: defaultComponent, taskId = topMainRootTask?.taskId, taskId = topMainRootTask?.taskId, owner = defaultOwner, owner = defaultOwner, displayId = original.displayId displayId = original.displayId, ) ) } } Loading @@ -141,14 +141,14 @@ class PolicyRequestProcessor( userHandle = owner, userHandle = owner, taskId = taskId, taskId = taskId, topComponent = componentName, topComponent = componentName, screenBounds = taskBounds screenBounds = taskBounds, ) ) } } private suspend fun replaceWithScreenshot( private suspend fun replaceWithScreenshot( original: ScreenshotData, original: ScreenshotData, componentName: ComponentName?, componentName: ComponentName?, owner: UserHandle?, owner: UserHandle, displayId: Int, displayId: Int, taskId: Int? = null, taskId: Int? = null, ): ScreenshotData { ): ScreenshotData { Loading