From feb3f559b2157de9ca06438038114aedb2cc604e Mon Sep 17 00:00:00 2001 From: Andy CrossGate Yan Date: Thu, 23 Mar 2023 15:28:42 +0000 Subject: [PATCH 1/2] Squashed revert of LOS UDFPS changes Way less than FOD, but reverting them nonetheless to keep in line with PHH AOSP - Revert "fixup! udfps: Restore illumination dot for global hbm" - Revert "udfps: Make pressed udfp view configurable" - Revert "udfps: Restore illumination dot for global hbm" - Revert "udfps: Change window type to TYPE_DISPLAY_OVERLAY" --- .../res/drawable-nodpi/udfps_icon_pressed.png | Bin 108 -> 0 bytes packages/SystemUI/res/layout/udfps_view.xml | 6 - .../SystemUI/res/values/lineage_config.xml | 3 - .../biometrics/AuthContainerView.java | 2 +- .../biometrics/UdfpsControllerOverlay.kt | 2 +- .../systemui/biometrics/UdfpsSurfaceView.java | 159 ------------------ .../android/systemui/biometrics/UdfpsView.kt | 31 +--- 7 files changed, 3 insertions(+), 200 deletions(-) delete mode 100644 packages/SystemUI/res/drawable-nodpi/udfps_icon_pressed.png delete mode 100644 packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java diff --git a/packages/SystemUI/res/drawable-nodpi/udfps_icon_pressed.png b/packages/SystemUI/res/drawable-nodpi/udfps_icon_pressed.png deleted file mode 100644 index 4102e28c1300b49323b50625d8cfaa73b006561f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}bl$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Ge4Z|jAr-fh5*U~o7?>FtSQ!{^cTTbP0l+XkK D@OB!I diff --git a/packages/SystemUI/res/layout/udfps_view.xml b/packages/SystemUI/res/layout/udfps_view.xml index 0fcbfa161ddf..257d238f5c54 100644 --- a/packages/SystemUI/res/layout/udfps_view.xml +++ b/packages/SystemUI/res/layout/udfps_view.xml @@ -28,10 +28,4 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> - - diff --git a/packages/SystemUI/res/values/lineage_config.xml b/packages/SystemUI/res/values/lineage_config.xml index 3b61502f551c..c7a73b79a5ec 100644 --- a/packages/SystemUI/res/values/lineage_config.xml +++ b/packages/SystemUI/res/values/lineage_config.xml @@ -19,9 +19,6 @@ 4 3 - - #ffffffff - false diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java index 699be662dd54..68e1f72d042a 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java @@ -847,7 +847,7 @@ public class AuthContainerView extends LinearLayout final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, - WindowManager.LayoutParams.TYPE_DISPLAY_OVERLAY, + WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL, windowFlags, PixelFormat.TRANSLUCENT); lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt index 6d1e958e21ad..8db4927ee059 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt @@ -109,7 +109,7 @@ class UdfpsControllerOverlay @JvmOverloads constructor( private var overlayTouchListener: TouchExplorationStateChangeListener? = null private val coreLayoutParams = WindowManager.LayoutParams( - WindowManager.LayoutParams.TYPE_DISPLAY_OVERLAY, + WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, 0 /* flags set in computeLayoutParams() */, PixelFormat.TRANSLUCENT ).apply { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java deleted file mode 100644 index 2488132b508b..000000000000 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (C) 2021 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; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.graphics.RectF; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; - -import com.android.systemui.R; - -/** - * Surface View for providing the Global High-Brightness Mode (GHBM) illumination for UDFPS. - */ -public class UdfpsSurfaceView extends SurfaceView implements SurfaceHolder.Callback { - private static final String TAG = "UdfpsSurfaceView"; - - /** - * Notifies {@link UdfpsView} when to enable GHBM illumination. - */ - interface GhbmIlluminationListener { - /** - * @param surface the surface for which GHBM should be enabled. - * @param onDisplayConfigured a runnable that should be run after GHBM is enabled. - */ - void enableGhbm(@NonNull Surface surface, @Nullable Runnable onDisplayConfigured); - } - - @NonNull private final SurfaceHolder mHolder; - @NonNull private final Paint mSensorPaint; - - @Nullable private GhbmIlluminationListener mGhbmIlluminationListener; - @Nullable private Runnable mOnDisplayConfigured; - boolean mAwaitingSurfaceToStartIllumination; - boolean mHasValidSurface; - - private Drawable mUdfpsIconPressed; - - public UdfpsSurfaceView(Context context, AttributeSet attrs) { - super(context, attrs); - - // Make this SurfaceView draw on top of everything else in this window. This allows us to - // 1) Always show the HBM circle on top of everything else, and - // 2) Properly composite this view with any other animations in the same window no matter - // what contents are added in which order to this view hierarchy. - setZOrderOnTop(true); - - mHolder = getHolder(); - mHolder.addCallback(this); - mHolder.setFormat(PixelFormat.RGBA_8888); - - mSensorPaint = new Paint(0 /* flags */); - mSensorPaint.setAntiAlias(true); - mSensorPaint.setColor(context.getColor(R.color.config_udfpsColor)); - mSensorPaint.setStyle(Paint.Style.FILL); - - mUdfpsIconPressed = context.getDrawable(R.drawable.udfps_icon_pressed); - } - - @Override public void surfaceCreated(SurfaceHolder holder) { - mHasValidSurface = true; - if (mAwaitingSurfaceToStartIllumination) { - doIlluminate(mOnDisplayConfigured); - mOnDisplayConfigured = null; - mAwaitingSurfaceToStartIllumination = false; - } - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - // Unused. - } - - @Override public void surfaceDestroyed(SurfaceHolder holder) { - mHasValidSurface = false; - } - - void setGhbmIlluminationListener(@Nullable GhbmIlluminationListener listener) { - mGhbmIlluminationListener = listener; - } - - /** - * Note: there is no corresponding method to stop GHBM illumination. It is expected that - * {@link UdfpsView} will hide this view, which would destroy the surface and remove the - * illumination dot. - */ - void startGhbmIllumination(@Nullable Runnable onDisplayConfigured) { - if (mGhbmIlluminationListener == null) { - Log.e(TAG, "startIllumination | mGhbmIlluminationListener is null"); - return; - } - - if (mHasValidSurface) { - doIlluminate(onDisplayConfigured); - } else { - mAwaitingSurfaceToStartIllumination = true; - mOnDisplayConfigured = onDisplayConfigured; - } - } - - private void doIlluminate(@Nullable Runnable onDisplayConfigured) { - if (mGhbmIlluminationListener == null) { - Log.e(TAG, "doIlluminate | mGhbmIlluminationListener is null"); - return; - } - - mGhbmIlluminationListener.enableGhbm(mHolder.getSurface(), onDisplayConfigured); - } - - /** - * Immediately draws the illumination dot on this SurfaceView's surface. - */ - void drawIlluminationDot(@NonNull RectF sensorRect) { - if (!mHasValidSurface) { - Log.e(TAG, "drawIlluminationDot | the surface is destroyed or was never created."); - return; - } - Canvas canvas = null; - try { - canvas = mHolder.lockCanvas(); - mUdfpsIconPressed.setBounds( - Math.round(sensorRect.left), - Math.round(sensorRect.top), - Math.round(sensorRect.right), - Math.round(sensorRect.bottom) - ); - mUdfpsIconPressed.draw(canvas); - canvas.drawOval(sensorRect, mSensorPaint); - } finally { - // Make sure the surface is never left in a bad state. - if (canvas != null) { - mHolder.unlockCanvasAndPost(canvas); - } - } - } -} diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt index 97590822a3fb..4a8877edfa53 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt @@ -25,7 +25,6 @@ import android.graphics.RectF import android.util.AttributeSet import android.util.Log import android.view.MotionEvent -import android.view.Surface import android.widget.FrameLayout import com.android.systemui.R import com.android.systemui.doze.DozeReceiver @@ -61,8 +60,6 @@ class UdfpsView( a.getFloat(R.styleable.UdfpsView_sensorTouchAreaCoefficient, 0f) } - private var ghbmView: UdfpsSurfaceView? = null - /** View controller (can be different for enrollment, BiometricPrompt, Keyguard, etc.). */ var animationViewController: UdfpsAnimationViewController<*>? = null @@ -89,10 +86,6 @@ class UdfpsView( return (animationViewController == null || !animationViewController!!.shouldPauseAuth()) } - override fun onFinishInflate() { - ghbmView = findViewById(R.id.hbm_view) - } - override fun dozeTimeTick() { animationViewController?.dozeTimeTick() } @@ -160,34 +153,12 @@ class UdfpsView( fun configureDisplay(onDisplayConfigured: Runnable) { isDisplayConfigured = true animationViewController?.onDisplayConfiguring() - val gView = ghbmView - if (gView != null) { - gView.setGhbmIlluminationListener(this::doIlluminate) - gView.visibility = VISIBLE - gView.startGhbmIllumination(onDisplayConfigured) - } else { - doIlluminate(null /* surface */, onDisplayConfigured) - } - } - - private fun doIlluminate(surface: Surface?, onDisplayConfigured: Runnable?) { - if (ghbmView != null && surface == null) { - Log.e(TAG, "doIlluminate | surface must be non-null for GHBM") - } - - mUdfpsDisplayMode?.enable { - onDisplayConfigured?.run() - ghbmView?.drawIlluminationDot(RectF(sensorRect)) - } + mUdfpsDisplayMode?.enable(onDisplayConfigured) } fun unconfigureDisplay() { isDisplayConfigured = false animationViewController?.onDisplayUnconfigured() - ghbmView?.let { view -> - view.setGhbmIlluminationListener(null) - view.visibility = INVISIBLE - } mUdfpsDisplayMode?.disable(null /* onDisabled */) } } -- 2.34.1