diff --git a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricModality.kt b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricModality.kt index fb580ca54aff2863639b9ed1ffcf7d2fbba0cabb..5344dcc51edaa82d271e283c5ac3a3c9a9cfe35a 100644 --- a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricModality.kt +++ b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricModality.kt @@ -18,7 +18,7 @@ package com.android.systemui.biometrics.shared.model import android.hardware.biometrics.BiometricAuthenticator -/** Shadows [BiometricAuthenticator.Modality] for Kotlin use within SysUI. */ +/** Shadows [BiometricAuthenticator.Modality] for Kotlin use within SysUI and Settings. */ enum class BiometricModality { None, Fingerprint, diff --git a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricUserInfo.kt b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricUserInfo.kt index 39689ec1618938bf562da6ba4617c657d8163832..fdac37b7a2c8f4403ad5e5c9dd8d59aab8ca2caa 100644 --- a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricUserInfo.kt +++ b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/BiometricUserInfo.kt @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2023 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.systemui.biometrics.shared.model /** diff --git a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/FingerprintSensor.kt b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/FingerprintSensor.kt new file mode 100644 index 0000000000000000000000000000000000000000..a2b119833474dc6460cda6852c0443b07b1de73a --- /dev/null +++ b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/FingerprintSensor.kt @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2023 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.systemui.biometrics.shared.model + +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal + +/** Fingerprint sensor property. Represents [FingerprintSensorPropertiesInternal]. */ +data class FingerprintSensor( + val sensorId: Int, + val sensorStrength: SensorStrength, + val maxEnrollmentsPerUser: Int, + val sensorType: FingerprintSensorType +) + +/** Convert [FingerprintSensorPropertiesInternal] to corresponding [FingerprintSensor] */ +fun FingerprintSensorPropertiesInternal.toFingerprintSensor(): FingerprintSensor { + val sensorStrength: SensorStrength = this.sensorStrength.toSensorStrength() + val sensorType: FingerprintSensorType = this.sensorType.toSensorType() + return FingerprintSensor(this.sensorId, sensorStrength, this.maxEnrollmentsPerUser, sensorType) +} diff --git a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/UdfpsOverlayParams.kt b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/UdfpsOverlayParams.kt index a9b4fe87cc47a9f91ffe484bd874f98cc4a8d9d7..65c5a49b1135432ec6177df58b5940d08c626c44 100644 --- a/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/UdfpsOverlayParams.kt +++ b/packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/UdfpsOverlayParams.kt @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2023 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.systemui.biometrics.shared.model import android.graphics.Rect diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index c095aa8349b39e1898704e1c57e8a3cfb851cb51..584357bb739cf9252e4924eff077b26515841b24 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -80,8 +80,8 @@ import androidx.core.math.MathUtils; import com.android.internal.accessibility.common.MagnificationConstants; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.graphics.SfVsyncFrameCallbackProvider; -import com.android.systemui.res.R; import com.android.systemui.model.SysUiState; +import com.android.systemui.res.R; import com.android.systemui.util.settings.SecureSettings; import java.io.PrintWriter; @@ -205,7 +205,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold private final Supplier<IWindowSession> mGlobalWindowSessionSupplier; private final SfVsyncFrameCallbackProvider mSfVsyncFrameProvider; private final MagnificationGestureDetector mGestureDetector; - private final int mBounceEffectDuration; + private int mBounceEffectDuration; private final Choreographer.FrameCallback mMirrorViewGeometryVsyncCallback; private Locale mLocale; private NumberFormat mPercentFormat; @@ -272,8 +272,8 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold setupMagnificationSizeScaleOptions(); - mBounceEffectDuration = mResources.getInteger( - com.android.internal.R.integer.config_shortAnimTime); + setBounceEffectDuration(mResources.getInteger( + com.android.internal.R.integer.config_shortAnimTime)); updateDimensions(); final Size windowFrameSize = restoreMagnificationWindowFrameSizeIfPossible(); @@ -1461,6 +1461,11 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold mDragView.setColorFilter(filter); } + @VisibleForTesting + void setBounceEffectDuration(int duration) { + mBounceEffectDuration = duration; + } + private void animateBounceEffect() { final ObjectAnimator scaleAnimator = ObjectAnimator.ofPropertyValuesHolder(mMirrorView, PropertyValuesHolder.ofFloat(View.SCALE_X, 1, mBounceEffectAnimationScale, 1), diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java index 187f0986353e6defc98bbb310882c4c524280659..b8d2bdbfa9c95c963a3d751aa9b892698d44f59c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java @@ -88,9 +88,9 @@ import androidx.test.InstrumentationRegistry; import androidx.test.filters.LargeTest; import com.android.internal.graphics.SfVsyncFrameCallbackProvider; -import com.android.systemui.res.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.model.SysUiState; +import com.android.systemui.res.R; import com.android.systemui.settings.FakeDisplayTracker; import com.android.systemui.util.leak.ReferenceTestUtils; import com.android.systemui.util.settings.SecureSettings; @@ -121,6 +121,9 @@ import java.util.concurrent.atomic.AtomicInteger; public class WindowMagnificationControllerTest extends SysuiTestCase { private static final int LAYOUT_CHANGE_TIMEOUT_MS = 5000; + // The duration couldn't too short, otherwise the animation check on bounce effect + // won't work in expectation. (b/299537784) + private static final int BOUNCE_EFFECT_DURATION_MS = 2000; private static final long ANIMATION_DURATION_MS = 300; private final long mWaitingAnimationPeriod = 2 * ANIMATION_DURATION_MS; @Mock @@ -205,6 +208,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { mSysUiState, () -> mWindowSessionSpy, mSecureSettings); + mWindowMagnificationController.setBounceEffectDuration(BOUNCE_EFFECT_DURATION_MS); verify(mMirrorWindowControl).setWindowDelegate( any(MirrorWindowControl.MirrorWindowDelegate.class));