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

Commit 0336781b authored by Joshua McCloskey's avatar Joshua McCloskey
Browse files

UDFPS Enrollment Refactor (4/N)

Accessibility + text/dpi change + rotation should be properly handled.
Debug repos were added to make UI developemnt for UDFPS much easier(not
requiring calls to fingerprint manager).

Change-Id: I89900cea0d9e953124781cdf308fb38858de5d16
parent 1eca5e76
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2788,6 +2788,7 @@
        <activity android:name=".biometrics.fingerprint2.ui.enrollment.activity.FingerprintEnrollmentV2Activity"
            android:exported="true"
            android:permission="android.permission.MANAGE_FINGERPRINT"
            android:configChanges="density"
            android:theme="@style/GlifTheme.Light">
            <intent-filter>
                <action android:name="android.settings.FINGERPRINT_SETUP" />
+100 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2024 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/udfps_layout"
    style="?attr/fingerprint_layout_theme"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <!-- This is used to grab style attributes and apply them
    to this layout -->
    <com.google.android.setupdesign.GlifLayout
        android:id="@+id/dummy_glif_layout"
        style="?attr/fingerprint_layout_theme"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:visibility="gone"
        />

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/sud_layout_icon"
            style="@style/SudGlifIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitStart"
            android:src="@drawable/ic_lock" />

        <TextView
            android:id="@+id/title"
            style="@style/SudGlifHeaderTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:lines="2"
            />

        <TextView
            android:id="@+id/description"
            style="@style/SudDescription.Glif"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:lines="3"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            />


        <com.airbnb.lottie.LottieAnimationView
            android:id="@+id/illustration_lottie"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:scaleType="centerInside"
            android:visibility="gone"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"
            app:lottie_speed=".85"
            />
    </LinearLayout>

    <FrameLayout
        android:id="@+id/layout_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal|bottom"
        android:clipToPadding="false"
        >

        <include layout="@layout/fingerprint_v2_udfps_enroll_view" />
    </FrameLayout>


</LinearLayout>
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/setup_wizard_layout"
    android:id="@+id/udfps_layout"
    style="?attr/fingerprint_layout_theme"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
+46 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.biometrics.fingerprint2.data.repository

import android.os.Build

/** Indicates if the developer has debugging features enabled. */
interface DebuggingRepository {

  /** A function that will return if a build is debuggable */
  fun isDebuggingEnabled(): Boolean
  /** A function that will return if udfps enrollment should be swapped with debug repos */
  fun isUdfpsEnrollmentDebuggingEnabled(): Boolean
}

class DebuggingRepositoryImpl : DebuggingRepository {
  /**
   * This flag can be flipped by the engineer which should allow for certain debugging features to
   * be enabled.
   */
  private val isBuildDebuggable = Build.IS_DEBUGGABLE
  /** This flag indicates if udfps should use debug repos to supply data to its various views. */
  private val udfpsEnrollmentDebugEnabled = true

  override fun isDebuggingEnabled(): Boolean {
    return isBuildDebuggable
  }

  override fun isUdfpsEnrollmentDebuggingEnabled(): Boolean {
    return isDebuggingEnabled() && udfpsEnrollmentDebugEnabled
  }
}
+31 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.biometrics.fingerprint2.data.repository

import android.graphics.Point
import kotlinx.coroutines.flow.Flow

/**
 * This repository simulates touch events. This is mainly used to debug accessibility and ensure
 * that talkback is correct.
 */
interface SimulatedTouchEventsRepository {
  /**
   * A flow simulating user touches.
   */
  val touchExplorationDebug: Flow<Point>
}
Loading