summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java17
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java40
3 files changed, 50 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 1d7a2798b200..be92bd48a619 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -59,8 +59,6 @@ import android.graphics.Color;
import android.graphics.Insets;
import android.graphics.Rect;
import android.graphics.Region;
-import android.hardware.biometrics.SensorLocationInternal;
-import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
@@ -224,8 +222,6 @@ import com.android.systemui.util.Utils;
import com.android.systemui.util.time.SystemClock;
import com.android.wm.shell.animation.FlingAnimationUtils;
-import kotlin.Unit;
-
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
@@ -236,6 +232,8 @@ import java.util.function.Consumer;
import javax.inject.Inject;
import javax.inject.Provider;
+import kotlin.Unit;
+
import kotlinx.coroutines.CoroutineDispatcher;
@CentralSurfacesComponent.CentralSurfacesScope
@@ -410,7 +408,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private int mDisplayRightInset = 0; // in pixels
private int mDisplayLeftInset = 0; // in pixels
- private final KeyguardClockPositionAlgorithm
+ @VisibleForTesting
+ KeyguardClockPositionAlgorithm
mClockPositionAlgorithm =
new KeyguardClockPositionAlgorithm();
private final KeyguardClockPositionAlgorithm.Result
@@ -1493,11 +1492,9 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
? 1.0f : mInterpolatedDarkAmount;
float udfpsAodTopLocation = -1f;
- if (mUpdateMonitor.isUdfpsEnrolled() && mAuthController.getUdfpsProps().size() > 0) {
- FingerprintSensorPropertiesInternal props = mAuthController.getUdfpsProps().get(0);
- final SensorLocationInternal location = props.getLocation();
- udfpsAodTopLocation = location.sensorLocationY - location.sensorRadius
- - mUdfpsMaxYBurnInOffset;
+ if (mUpdateMonitor.isUdfpsEnrolled() && mAuthController.getUdfpsLocation() != null) {
+ udfpsAodTopLocation = mAuthController.getUdfpsLocation().y
+ - mAuthController.getUdfpsRadius() - mUdfpsMaxYBurnInOffset;
}
mClockPositionAlgorithm.setup(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index 068d933652ac..f870631bd72b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -305,6 +305,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
@Mock protected ActivityStarter mActivityStarter;
@Mock protected KeyguardFaceAuthInteractor mKeyguardFaceAuthInteractor;
+ protected final int mMaxUdfpsBurnInOffsetY = 5;
protected KeyguardBottomAreaInteractor mKeyguardBottomAreaInteractor;
protected KeyguardInteractor mKeyguardInteractor;
protected NotificationPanelViewController.TouchHandler mTouchHandler;
@@ -365,6 +366,8 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
when(mResources.getDisplayMetrics()).thenReturn(mDisplayMetrics);
mDisplayMetrics.density = 100;
when(mResources.getBoolean(R.bool.config_enableNotificationShadeDrag)).thenReturn(true);
+ when(mResources.getDimensionPixelSize(R.dimen.udfps_burn_in_offset_y))
+ .thenReturn(mMaxUdfpsBurnInOffsetY);
when(mResources.getDimensionPixelSize(R.dimen.notifications_top_padding_split_shade))
.thenReturn(NOTIFICATION_SCRIM_TOP_PADDING_IN_SPLIT_SHADE);
when(mResources.getDimensionPixelSize(R.dimen.notification_panel_margin_horizontal))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
index 600fb5c2e1bc..48e0b53fc931 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
@@ -29,6 +29,7 @@ import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
@@ -44,6 +45,7 @@ import static org.mockito.Mockito.when;
import android.animation.Animator;
import android.animation.ValueAnimator;
+import android.graphics.Point;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.MotionEvent;
@@ -61,6 +63,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.notification.row.ExpandableView.OnHeightChangedListener;
import com.android.systemui.statusbar.notification.stack.AmbientState;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
+import com.android.systemui.statusbar.phone.KeyguardClockPositionAlgorithm;
import org.junit.Before;
import org.junit.Ignore;
@@ -251,6 +254,43 @@ public class NotificationPanelViewControllerTest extends NotificationPanelViewCo
}
@Test
+ public void testOnDozeAmountChanged_positionClockAndNotificationsUsesUdfpsLocation() {
+ // GIVEN UDFPS is enrolled and we're on the keyguard
+ final Point udfpsLocationCenter = new Point(0, 100);
+ final float udfpsRadius = 10f;
+ when(mUpdateMonitor.isUdfpsEnrolled()).thenReturn(true);
+ when(mAuthController.getUdfpsLocation()).thenReturn(udfpsLocationCenter);
+ when(mAuthController.getUdfpsRadius()).thenReturn(udfpsRadius);
+ mNotificationPanelViewController.getStatusBarStateListener().onStateChanged(KEYGUARD);
+
+ // WHEN the doze amount changes
+ mNotificationPanelViewController.mClockPositionAlgorithm = mock(
+ KeyguardClockPositionAlgorithm.class);
+ mNotificationPanelViewController.getStatusBarStateListener().onDozeAmountChanged(1f, 1f);
+
+ // THEN the clock positions accounts for the UDFPS location & its worst case burn in
+ final float udfpsTop = udfpsLocationCenter.y - udfpsRadius - mMaxUdfpsBurnInOffsetY;
+ verify(mNotificationPanelViewController.mClockPositionAlgorithm).setup(
+ anyInt(),
+ anyFloat(),
+ anyInt(),
+ anyInt(),
+ anyInt(),
+ /* darkAmount */ eq(1f),
+ anyFloat(),
+ anyBoolean(),
+ anyInt(),
+ anyFloat(),
+ anyInt(),
+ anyBoolean(),
+ /* udfpsTop */ eq(udfpsTop),
+ anyFloat(),
+ anyBoolean()
+ );
+ }
+
+
+ @Test
public void testSetExpandedHeight() {
mNotificationPanelViewController.setExpandedHeight(200);
assertThat((int) mNotificationPanelViewController.getExpandedHeight()).isEqualTo(200);