Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54dcbabd authored by Matt Casey's avatar Matt Casey
Browse files

Make userHandle non-null

Downstream code was already assuming it wasn't null. Not setting the
value in ScreenshotRequest would send in user zero which would not
result in a null. UserHandle.of() does not return null, so we'll always
have a value even if a bad int is passed in.

Bug: 370798587
Flag: EXEMPT minor refactor
Test: atest com.android.systemui.screenshot
Change-Id: Idbe4185b4bdafff090758b7d5faf276e39fa3184
parent 2addde75
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ constructor(
    override fun handleScreenshot(
        screenshot: ScreenshotData,
        finisher: Consumer<Uri?>,
        requestCallback: TakeScreenshotService.RequestCallback
        requestCallback: TakeScreenshotService.RequestCallback,
    ) {
        if (screenshot.type == WindowManager.TAKE_SCREENSHOT_FULLSCREEN) {
            screenshot.bitmap = imageCapture.captureDisplay(screenshot.displayId, crop = null)
@@ -69,8 +69,8 @@ constructor(
                Executors.newSingleThreadExecutor(),
                UUID.randomUUID(),
                screenshot.bitmap,
                screenshot.getUserOrDefault(),
                screenshot.displayId
                screenshot.userHandle,
                screenshot.displayId,
            )
        future.addListener(
            {
@@ -86,7 +86,7 @@ constructor(
                    requestCallback.reportError()
                }
            },
            mainExecutor
            mainExecutor,
        )
    }

@@ -98,11 +98,11 @@ constructor(
                .notifyScreenshotError(R.string.screenshot_failed_to_save_text)
        } else {
            uiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED, 0, screenshot.packageNameString)
            if (userManager.isManagedProfile(screenshot.getUserOrDefault().identifier)) {
            if (userManager.isManagedProfile(screenshot.userHandle.identifier)) {
                uiEventLogger.log(
                    ScreenshotEvent.SCREENSHOT_SAVED_TO_WORK_PROFILE,
                    0,
                    screenshot.packageNameString
                    screenshot.packageNameString,
                )
            }
        }
+1 −1
Original line number Diff line number Diff line
@@ -301,7 +301,7 @@ public class LegacyScreenshotController implements InteractiveScreenshotHandler
        saveScreenshotInBackground(screenshot, requestId, finisher, result -> {
            if (result.uri != null) {
                ScreenshotSavedResult savedScreenshot = new ScreenshotSavedResult(
                        result.uri, screenshot.getUserOrDefault(), result.timestamp);
                        result.uri, screenshot.getUserHandle(), result.timestamp);
                mActionsController.setCompletedScreenshot(requestId, savedScreenshot);
            }
        });
+5 −9
Original line number Diff line number Diff line
@@ -214,11 +214,7 @@ internal constructor(
        saveScreenshotInBackground(screenshot, requestId, finisher) { result ->
            if (result.uri != null) {
                val savedScreenshot =
                    ScreenshotSavedResult(
                        result.uri,
                        screenshot.getUserOrDefault(),
                        result.timestamp,
                    )
                    ScreenshotSavedResult(result.uri, screenshot.userHandle, result.timestamp)
                actionsController.setCompletedScreenshot(requestId, savedScreenshot)
            }
        }
@@ -235,7 +231,7 @@ internal constructor(
        window.setFocusable(true)
        viewProxy.requestFocus()

        enqueueScrollCaptureRequest(requestId, screenshot.userHandle!!)
        enqueueScrollCaptureRequest(requestId, screenshot.userHandle)

        window.attachWindow()

@@ -267,7 +263,7 @@ internal constructor(

    private fun prepareViewForNewScreenshot(screenshot: ScreenshotData, oldPackageName: String?) {
        window.whenWindowAttached {
            announcementResolver.getScreenshotAnnouncement(screenshot.userHandle!!.identifier) {
            announcementResolver.getScreenshotAnnouncement(screenshot.userHandle.identifier) {
                viewProxy.announceForAccessibility(it)
            }
        }
@@ -517,7 +513,7 @@ internal constructor(
                bgExecutor,
                requestId,
                screenshot.bitmap,
                screenshot.getUserOrDefault(),
                screenshot.userHandle,
                display.displayId,
            )
        future.addListener(
@@ -525,7 +521,7 @@ internal constructor(
                try {
                    val result = future.get()
                    Log.d(TAG, "Saved screenshot: $result")
                    logScreenshotResultStatus(result.uri, screenshot.userHandle!!)
                    logScreenshotResultStatus(result.uri, screenshot.userHandle)
                    onResult.accept(result)
                    if (LogConfig.DEBUG_CALLBACK) {
                        Log.d(TAG, "finished bg processing, calling back with uri: ${result.uri}")
+3 −3
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ data class ScreenshotData(
    @ScreenshotType val type: Int,
    @ScreenshotSource val source: Int,
    /** 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. */
    val topComponent: ComponentName?,
    var screenBounds: Rect?,
@@ -40,7 +40,7 @@ data class ScreenshotData(
            ScreenshotData(
                type = request.type,
                source = request.source,
                userHandle = if (request.userId >= 0) UserHandle.of(request.userId) else null,
                userHandle = UserHandle.of(request.userId),
                topComponent = request.topComponent,
                screenBounds = request.boundsInScreen,
                taskId = request.taskId,
@@ -51,7 +51,7 @@ data class ScreenshotData(

        @VisibleForTesting
        fun forTesting(
            userHandle: UserHandle? = null,
            userHandle: UserHandle = UserHandle.CURRENT,
            source: Int = ScreenshotSource.SCREENSHOT_KEY_CHORD,
            topComponent: ComponentName? = null,
            bitmap: Bitmap? = null,
+4 −4
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ class PolicyRequestProcessor(
                        updates.component,
                        updates.owner,
                        type.taskId,
                        type.taskBounds
                        type.taskBounds,
                    )
                is FullScreen ->
                    replaceWithScreenshot(
@@ -122,7 +122,7 @@ class PolicyRequestProcessor(
            componentName = topMainRootTask?.topActivity ?: defaultComponent,
            taskId = topMainRootTask?.taskId,
            owner = defaultOwner,
            displayId = original.displayId
            displayId = original.displayId,
        )
    }

@@ -141,14 +141,14 @@ class PolicyRequestProcessor(
            userHandle = owner,
            taskId = taskId,
            topComponent = componentName,
            screenBounds = taskBounds
            screenBounds = taskBounds,
        )
    }

    private suspend fun replaceWithScreenshot(
        original: ScreenshotData,
        componentName: ComponentName?,
        owner: UserHandle?,
        owner: UserHandle,
        displayId: Int,
        taskId: Int? = null,
    ): ScreenshotData {
Loading