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

Commit aa2dfabb authored by Omar Elmekkawy's avatar Omar Elmekkawy
Browse files

[12/n] Fix tiling bug causing crash because of HSUM

Fix a bug where not using the user context causes a crash.

Flag: com.android.window.flags.enable_tile_resizing
Test: on device testing
Bug: 376414590
Change-Id: Ib0af6f0dff1761ae8170d893446f90b23b070ca1
parent 5699a18f
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.res.Resources
import android.graphics.Bitmap
import android.graphics.Rect
import android.os.IBinder
import android.os.UserHandle
import android.util.Slog
import android.view.SurfaceControl
import android.view.SurfaceControl.Transaction
@@ -361,6 +362,8 @@ class DesktopTilingWindowDecoration(
        private lateinit var resizeVeilBitmap: Bitmap
        private lateinit var resizeVeil: ResizeVeil
        private val displayContext = displayController.getDisplayContext(taskInfo.displayId)
        private val userContext =
            context.createContextAsUser(UserHandle.of(taskInfo.userId), /* flags= */ 0)

        fun initIfNeeded() {
            if (!isInitialised) {
@@ -379,7 +382,7 @@ class DesktopTilingWindowDecoration(
                displayContext?.let {
                    createIconFactory(displayContext, R.dimen.desktop_mode_resize_veil_icon_size)
                } ?: return
            val pm = context.getApplicationContext().getPackageManager()
            val pm = userContext.getPackageManager()
            val activityInfo = pm.getActivityInfo(baseActivity, 0 /* flags */)
            val provider = IconProvider(displayContext)
            val appIconDrawable = provider.getIcon(activityInfo)
+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.times
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever

@SmallTest
@RunWith(AndroidTestingRunner::class)
@@ -73,6 +74,7 @@ class DesktopTilingDecorViewModelTest : ShellTestCase() {
                returnToDragStartAnimatorMock,
                desktopRepository,
            )
        whenever(contextMock.createContextAsUser(any(), any())).thenReturn(contextMock)
    }

    @Test
+2 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ class DesktopTilingWindowDecorationTest : ShellTestCase() {
                returnToDragStartAnimator,
                desktopRepository,
            )
        whenever(context.createContextAsUser(any(), any())).thenReturn(context)
    }

    @Test
@@ -479,6 +480,7 @@ class DesktopTilingWindowDecorationTest : ShellTestCase() {
        assertThat(tilingDecoration.rightTaskResizingHelper).isNull()
        verify(desktopWindowDecoration, times(2)).removeDragResizeListener(any())
        verify(tiledTaskHelper, times(2)).dispose()
        verify(context, never()).getApplicationContext()
    }

    private fun initTiledTaskHelperMock(taskInfo: ActivityManager.RunningTaskInfo) {