diff --git a/res/layout-land/udfps_enroll_enrolling.xml b/res/layout-land/udfps_enroll_enrolling.xml
index f3237887e9a..743684fb02e 100644
--- a/res/layout-land/udfps_enroll_enrolling.xml
+++ b/res/layout-land/udfps_enroll_enrolling.xml
@@ -96,4 +96,6 @@
+
+
\ No newline at end of file
diff --git a/res/layout/udfps_enroll_enrolling.xml b/res/layout/udfps_enroll_enrolling.xml
index c97591d6d52..05556ffe46c 100644
--- a/res/layout/udfps_enroll_enrolling.xml
+++ b/res/layout/udfps_enroll_enrolling.xml
@@ -18,6 +18,7 @@
+ android:layout_gravity="center_horizontal|bottom"
+ tools:ignore="Suspicious0dp">
+
+
+
{
+ if (view.getVisibility() == View.VISIBLE
+ && hasOverlap(view, udfpsEnrollView)) {
+ view.setVisibility(View.GONE);
+ }
+ });
+ setOnHoverListener(false, layout, udfpsEnrollView);
setContentView(layout);
break;
case Surface.ROTATION_270:
default:
- if (FeatureFlagUtils.isEnabled(getApplicationContext(),
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS)) {
- final UdfpsEnrollView udfpsEnrollView = addUdfpsEnrollView(props.get(0));
- layout.addView(udfpsEnrollView);
- setOnHoverListener(true, layout, udfpsEnrollView);
- }
-
+ setOnHoverListener(true, layout, udfpsEnrollView);
setContentView(layout);
break;
}
@@ -1235,10 +1223,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
}
}
- private UdfpsEnrollView addUdfpsEnrollView(FingerprintSensorPropertiesInternal udfpsProps) {
- UdfpsEnrollView udfpsEnrollView = (UdfpsEnrollView) getLayoutInflater().inflate(
- R.layout.udfps_enroll_view, null, false);
-
+ private UdfpsEnrollView updateUdfpsEnrollView(UdfpsEnrollView udfpsEnrollView,
+ FingerprintSensorPropertiesInternal udfpsProps) {
DisplayInfo displayInfo = new DisplayInfo();
getDisplay().getDisplayInfo(displayInfo);
mScaleFactor = mUdfpsUtils.getScaleFactor(displayInfo);
@@ -1305,6 +1291,24 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
: R.id.sud_layout_content).setOnHoverListener(onHoverListener);
}
+
+ @VisibleForTesting boolean hasOverlap(View view1, View view2) {
+ int[] firstPosition = new int[2];
+ int[] secondPosition = new int[2];
+
+ view1.getLocationOnScreen(firstPosition);
+ view2.getLocationOnScreen(secondPosition);
+
+ // Rect constructor parameters: left, top, right, bottom
+ Rect rectView1 = new Rect(firstPosition[0], firstPosition[1],
+ firstPosition[0] + view1.getMeasuredWidth(),
+ firstPosition[1] + view1.getMeasuredHeight());
+ Rect rectView2 = new Rect(secondPosition[0], secondPosition[1],
+ secondPosition[0] + view2.getMeasuredWidth(),
+ secondPosition[1] + view2.getMeasuredHeight());
+ return rectView1.intersect(rectView2);
+ }
+
public static class IconTouchDialog extends InstrumentedDialogFragment {
@Override
diff --git a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java
index 6e42059395f..5ded91ec68c 100644
--- a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java
+++ b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollView.java
@@ -161,22 +161,20 @@ public class UdfpsEnrollView extends FrameLayout implements UdfpsEnrollHelper.Li
MarginLayoutParams marginLayoutParams = (MarginLayoutParams) getLayoutParams();
FrameLayout.LayoutParams params = (LayoutParams) getLayoutParams();
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) {
- parentView.getViewTreeObserver().addOnDrawListener(() -> {
- final int[] coords = parentView.getLocationOnScreen();
- final int parentLeft = coords[0];
- final int parentTop = coords[1];
- final int parentRight = parentLeft + parentView.getWidth();
- params.gravity = Gravity.RIGHT | Gravity.TOP;
- final int rightMargin = parentRight - rotatedBounds.right - getPaddingX();
- final int topMargin = rotatedBounds.top - parentTop - getPaddingY();
- if (marginLayoutParams.rightMargin == rightMargin
- && marginLayoutParams.topMargin == topMargin) {
- return;
- }
- marginLayoutParams.rightMargin = rightMargin;
- marginLayoutParams.topMargin = topMargin;
- setLayoutParams(params);
- });
+ final int[] coords = parentView.getLocationOnScreen();
+ final int parentLeft = coords[0];
+ final int parentTop = coords[1];
+ final int parentRight = parentLeft + parentView.getWidth();
+ params.gravity = Gravity.RIGHT | Gravity.TOP;
+ final int rightMargin = parentRight - rotatedBounds.right - getPaddingX();
+ final int topMargin = rotatedBounds.top - parentTop - getPaddingY();
+ if (marginLayoutParams.rightMargin == rightMargin
+ && marginLayoutParams.topMargin == topMargin) {
+ return;
+ }
+ marginLayoutParams.rightMargin = rightMargin;
+ marginLayoutParams.topMargin = topMargin;
+ setLayoutParams(params);
} else {
final int[] coords = parentView.getLocationOnScreen();
final int parentLeft = coords[0];
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
index 7282be357c1..959c6426894 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java
@@ -53,7 +53,6 @@ import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Vibrator;
-import android.util.FeatureFlagUtils;
import android.view.Display;
import android.view.Surface;
import android.view.View;
@@ -203,8 +202,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsOverlayEnrollment_showOverlayPortrait() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_0);
@@ -216,8 +213,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsOverlayEnrollment_showOverlayLandscape() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_90);
@@ -229,8 +224,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsOverlayEnrollment_usesCorrectProgressBarFillColor() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
final TypedArray ta = mActivity.obtainStyledAttributes(null,
R.styleable.BiometricsEnrollView, R.attr.biometricsEnrollStyle,
@@ -250,9 +243,7 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void fingerprintUdfpsOverlayEnrollment_checkViewOverlapPortrait() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
- when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_90);
+ when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_0);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
final GlifLayout defaultLayout = mActivity.findViewById(R.id.setup_wizard_layout);
@@ -294,9 +285,9 @@ public class FingerprintEnrollEnrollingTest {
udfpsEnrollView.getViewTreeObserver().addOnDrawListener(() -> {
udfpsEnrollView.getLocationOnScreen(udfpsEnrollViewPosition);
rectUdfpsEnrollView.set(new Rect(udfpsEnrollViewPosition[0],
- udfpsEnrollViewPosition[1], udfpsEnrollViewPosition[0]
- + udfpsEnrollView.getWidth(), udfpsEnrollViewPosition[1]
- + udfpsEnrollView.getHeight()));
+ udfpsEnrollViewPosition[1], udfpsEnrollViewPosition[0]
+ + udfpsEnrollView.getWidth(), udfpsEnrollViewPosition[1]
+ + udfpsEnrollView.getHeight()));
});
lottieAnimationContainer.getViewTreeObserver().addOnDrawListener(() -> {
@@ -320,10 +311,36 @@ public class FingerprintEnrollEnrollingTest {
.intersect(rectUdfpsEnrollView.get())).isFalse();
}
+ @Test
+ public void fingerprintUdfpsOverlayEnrollment_descriptionViewGoneWithOverlap() {
+ initializeActivityWithoutCreate(TYPE_UDFPS_OPTICAL);
+ doReturn(true).when(mActivity).hasOverlap(any(), any());
+ when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_0);
+ createActivity();
+
+ final GlifLayout defaultLayout = spy(mActivity.findViewById(R.id.setup_wizard_layout));
+ final TextView descriptionTextView = defaultLayout.getDescriptionTextView();
+
+ defaultLayout.getViewTreeObserver().dispatchOnDraw();
+ assertThat(descriptionTextView.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void fingerprintUdfpsOverlayEnrollment_descriptionViewVisibleWithoutOverlap() {
+ initializeActivityWithoutCreate(TYPE_UDFPS_OPTICAL);
+ doReturn(false).when(mActivity).hasOverlap(any(), any());
+ when(mMockDisplay.getRotation()).thenReturn(Surface.ROTATION_0);
+ createActivity();
+
+ final GlifLayout defaultLayout = spy(mActivity.findViewById(R.id.setup_wizard_layout));
+ final TextView descriptionTextView = defaultLayout.getDescriptionTextView();
+
+ defaultLayout.getViewTreeObserver().dispatchOnDraw();
+ assertThat(descriptionTextView.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
@Test
public void forwardEnrollProgressEvents() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
EnrollListener listener = new EnrollListener(mActivity);
@@ -337,8 +354,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void forwardEnrollHelpEvents() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
EnrollListener listener = new EnrollListener(mActivity);
@@ -352,8 +367,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void forwardEnrollAcquiredEvents() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
EnrollListener listener = new EnrollListener(mActivity);
@@ -368,8 +381,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void forwardEnrollPointerDownEvents() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
EnrollListener listener = new EnrollListener(mActivity);
@@ -383,8 +394,6 @@ public class FingerprintEnrollEnrollingTest {
@Test
public void forwardEnrollPointerUpEvents() {
- FeatureFlagUtils.setEnabled(mContext,
- FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, true);
initializeActivityFor(TYPE_UDFPS_OPTICAL);
EnrollListener listener = new EnrollListener(mActivity);