package com.android.systemui.biometrics.ui import android.content.Context import android.graphics.Insets import android.util.AttributeSet import android.view.View import android.view.WindowInsets import android.view.WindowInsets.Type import android.widget.LinearLayout import com.android.systemui.biometrics.AuthPanelController import com.android.systemui.biometrics.plugins.AuthContextPlugins import com.android.systemui.biometrics.ui.binder.CredentialViewBinder import com.android.systemui.biometrics.ui.binder.Spaghetti import com.android.systemui.biometrics.ui.viewmodel.CredentialViewModel /** Pattern credential view for BiometricPrompt. */ class CredentialPatternView(context: Context, attrs: AttributeSet?) : LinearLayout(context, attrs), CredentialView, View.OnApplyWindowInsetsListener { /** Initializes the view. */ override fun init( viewModel: CredentialViewModel, host: CredentialView.Host, panelViewController: AuthPanelController, animatePanel: Boolean, legacyCallback: Spaghetti.Callback, plugins: AuthContextPlugins?, ) { CredentialViewBinder.bind( this, host, viewModel, panelViewController, animatePanel, legacyCallback, plugins, ) } override fun onFinishInflate() { super.onFinishInflate() setOnApplyWindowInsetsListener(this) } override fun onApplyWindowInsets(v: View, insets: WindowInsets): WindowInsets { val statusBarInsets: Insets = insets.getInsets(Type.statusBars()) val displayCutoutInsets: Insets = insets.getInsets(Type.displayCutout()) val navigationInsets: Insets = insets.getInsets(Type.navigationBars()) setPadding( displayCutoutInsets.left, statusBarInsets.top.coerceAtLeast(displayCutoutInsets.top), displayCutoutInsets.right, navigationInsets.bottom, ) return WindowInsets.CONSUMED } }