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

Commit ca1685bf authored by Catherine Liang's avatar Catherine Liang Committed by Android (Google) Code Review
Browse files

Merge "Adjust keyguard preview renderer to allow different displays" into main

parents 449d15ae 6ed5afe6
Loading
Loading
Loading
Loading
+30 −19
Original line number Original line Diff line number Diff line
@@ -27,11 +27,14 @@ import android.hardware.display.DisplayManager
import android.os.Bundle
import android.os.Bundle
import android.os.Handler
import android.os.Handler
import android.os.IBinder
import android.os.IBinder
import android.view.Display
import android.view.Display.DEFAULT_DISPLAY
import android.view.LayoutInflater
import android.view.LayoutInflater
import android.view.SurfaceControlViewHost
import android.view.SurfaceControlViewHost
import android.view.View
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup
import android.view.WindowManager
import android.view.WindowManager
import android.view.WindowManager.LayoutParams.TYPE_KEYGUARD
import android.widget.FrameLayout
import android.widget.FrameLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isInvisible
import androidx.core.view.isInvisible
@@ -125,6 +128,8 @@ constructor(
    private val shouldHideClock: Boolean =
    private val shouldHideClock: Boolean =
        bundle.getBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, false)
        bundle.getBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, false)
    private val wallpaperColors: WallpaperColors? = bundle.getParcelable(KEY_COLORS)
    private val wallpaperColors: WallpaperColors? = bundle.getParcelable(KEY_COLORS)
    private val displayId = bundle.getInt(KEY_DISPLAY_ID, DEFAULT_DISPLAY)
    private val display: Display = displayManager.getDisplay(displayId)


    private var host: SurfaceControlViewHost
    private var host: SurfaceControlViewHost


@@ -164,7 +169,7 @@ constructor(
            host =
            host =
                SurfaceControlViewHost(
                SurfaceControlViewHost(
                    context,
                    context,
                    displayManager.getDisplay(bundle.getInt(KEY_DISPLAY_ID)),
                    displayManager.getDisplay(DEFAULT_DISPLAY),
                    hostToken,
                    hostToken,
                    "KeyguardPreviewRenderer"
                    "KeyguardPreviewRenderer"
                )
                )
@@ -174,21 +179,27 @@ constructor(


    fun render() {
    fun render() {
        mainHandler.post {
        mainHandler.post {
            val rootView = FrameLayout(context)
            val previewContext = context.createDisplayContext(display)


            setupKeyguardRootView(rootView)
            val rootView = FrameLayout(previewContext)

            setupKeyguardRootView(previewContext, rootView)


            if (!featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) {
            if (!featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) {
                setUpBottomArea(rootView)
                setUpBottomArea(rootView)
            }
            }


            val windowContext = context.createWindowContext(display, TYPE_KEYGUARD, null)
            val windowManagerOfDisplay = windowContext.getSystemService(WindowManager::class.java)
            rootView.measure(
            rootView.measure(
                View.MeasureSpec.makeMeasureSpec(
                View.MeasureSpec.makeMeasureSpec(
                    windowManager.currentWindowMetrics.bounds.width(),
                    windowManagerOfDisplay?.currentWindowMetrics?.bounds?.width()
                        ?: windowManager.currentWindowMetrics.bounds.width(),
                    View.MeasureSpec.EXACTLY
                    View.MeasureSpec.EXACTLY
                ),
                ),
                View.MeasureSpec.makeMeasureSpec(
                View.MeasureSpec.makeMeasureSpec(
                    windowManager.currentWindowMetrics.bounds.height(),
                    windowManagerOfDisplay?.currentWindowMetrics?.bounds?.height()
                        ?: windowManager.currentWindowMetrics.bounds.height(),
                    View.MeasureSpec.EXACTLY
                    View.MeasureSpec.EXACTLY
                ),
                ),
            )
            )
@@ -251,7 +262,7 @@ constructor(
     *
     *
     * The end padding is as follows: Below clock padding end
     * The end padding is as follows: Below clock padding end
     */
     */
    private fun setUpSmartspace(parentView: ViewGroup) {
    private fun setUpSmartspace(previewContext: Context, parentView: ViewGroup) {
        if (
        if (
            !lockscreenSmartspaceController.isEnabled() ||
            !lockscreenSmartspaceController.isEnabled() ||
                !lockscreenSmartspaceController.isDateWeatherDecoupled()
                !lockscreenSmartspaceController.isDateWeatherDecoupled()
@@ -263,12 +274,12 @@ constructor(


        val topPadding: Int =
        val topPadding: Int =
            KeyguardPreviewSmartspaceViewModel.getLargeClockSmartspaceTopPadding(
            KeyguardPreviewSmartspaceViewModel.getLargeClockSmartspaceTopPadding(
                context.resources,
                previewContext.resources,
            )
            )
        val startPadding: Int =
        val startPadding: Int =
            context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start)
            previewContext.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start)
        val endPadding: Int =
        val endPadding: Int =
            context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_end)
            previewContext.resources.getDimensionPixelSize(R.dimen.below_clock_padding_end)


        smartSpaceView?.let {
        smartSpaceView?.let {
            it.setPaddingRelative(startPadding, topPadding, endPadding, 0)
            it.setPaddingRelative(startPadding, topPadding, endPadding, 0)
@@ -308,8 +319,8 @@ constructor(
    }
    }


    @OptIn(ExperimentalCoroutinesApi::class)
    @OptIn(ExperimentalCoroutinesApi::class)
    private fun setupKeyguardRootView(rootView: FrameLayout) {
    private fun setupKeyguardRootView(previewContext: Context, rootView: FrameLayout) {
        val keyguardRootView = KeyguardRootView(context, null).apply { removeAllViews() }
        val keyguardRootView = KeyguardRootView(previewContext, null).apply { removeAllViews() }
        disposables.add(
        disposables.add(
            KeyguardRootViewBinder.bind(
            KeyguardRootViewBinder.bind(
                keyguardRootView,
                keyguardRootView,
@@ -333,10 +344,10 @@ constructor(
            if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) {
            if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) {
                setupShortcuts(keyguardRootView)
                setupShortcuts(keyguardRootView)
            }
            }
            setUpUdfps(rootView)
            setUpUdfps(previewContext, rootView)


            if (!shouldHideClock) {
            if (!shouldHideClock) {
                setUpClock(rootView)
                setUpClock(previewContext, rootView)
                KeyguardPreviewClockViewBinder.bind(
                KeyguardPreviewClockViewBinder.bind(
                    largeClockHostView,
                    largeClockHostView,
                    smallClockHostView,
                    smallClockHostView,
@@ -344,7 +355,7 @@ constructor(
                )
                )
            }
            }


            setUpSmartspace(rootView)
            setUpSmartspace(previewContext, rootView)
            smartSpaceView?.let {
            smartSpaceView?.let {
                KeyguardPreviewSmartspaceViewBinder.bind(it, smartspaceViewModel)
                KeyguardPreviewSmartspaceViewBinder.bind(it, smartspaceViewModel)
            }
            }
@@ -381,7 +392,7 @@ constructor(
        }
        }
    }
    }


    private fun setUpUdfps(parentView: ViewGroup) {
    private fun setUpUdfps(previewContext: Context, parentView: ViewGroup) {
        val sensorBounds = udfpsOverlayInteractor.udfpsOverlayParams.value.sensorBounds
        val sensorBounds = udfpsOverlayInteractor.udfpsOverlayParams.value.sensorBounds


        // If sensorBounds are default rect, then there is no UDFPS
        // If sensorBounds are default rect, then there is no UDFPS
@@ -399,7 +410,7 @@ constructor(
            sensorBounds.bottom
            sensorBounds.bottom
        )
        )
        val finger =
        val finger =
            LayoutInflater.from(context)
            LayoutInflater.from(previewContext)
                .inflate(
                .inflate(
                    R.layout.udfps_keyguard_preview,
                    R.layout.udfps_keyguard_preview,
                    parentView,
                    parentView,
@@ -408,12 +419,12 @@ constructor(
        parentView.addView(finger, fingerprintLayoutParams)
        parentView.addView(finger, fingerprintLayoutParams)
    }
    }


    private fun setUpClock(parentView: ViewGroup) {
    private fun setUpClock(previewContext: Context, parentView: ViewGroup) {
        largeClockHostView =
        largeClockHostView =
            if (featureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) {
            if (featureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) {
                parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view_large)
                parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view_large)
            } else {
            } else {
                val hostView = FrameLayout(context)
                val hostView = FrameLayout(previewContext)
                hostView.layoutParams =
                hostView.layoutParams =
                    FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams(
                        FrameLayout.LayoutParams.MATCH_PARENT,
                        FrameLayout.LayoutParams.MATCH_PARENT,
@@ -429,7 +440,7 @@ constructor(
                parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view)
                parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view)
            } else {
            } else {
                val resources = parentView.resources
                val resources = parentView.resources
                val hostView = FrameLayout(context)
                val hostView = FrameLayout(previewContext)
                val layoutParams =
                val layoutParams =
                    FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams(
                        FrameLayout.LayoutParams.WRAP_CONTENT,
                        FrameLayout.LayoutParams.WRAP_CONTENT,