Merge "Replaced setQsExpanded calls in NPVC with listener" into tm-qpr-dev
This commit is contained in:
@@ -43,9 +43,6 @@ public interface FalsingCollector {
|
||||
/** */
|
||||
void onQsDown();
|
||||
|
||||
/** */
|
||||
void setQsExpanded(boolean expanded);
|
||||
|
||||
/** */
|
||||
boolean shouldEnforceBouncer();
|
||||
|
||||
|
||||
@@ -48,10 +48,6 @@ public class FalsingCollectorFake implements FalsingCollector {
|
||||
public void onQsDown() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQsExpanded(boolean expanded) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldEnforceBouncer() {
|
||||
return false;
|
||||
|
||||
@@ -23,6 +23,8 @@ import android.hardware.biometrics.BiometricSourceType;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
@@ -30,6 +32,7 @@ import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
|
||||
@@ -133,6 +136,7 @@ class FalsingCollectorImpl implements FalsingCollector {
|
||||
ProximitySensor proximitySensor,
|
||||
StatusBarStateController statusBarStateController,
|
||||
KeyguardStateController keyguardStateController,
|
||||
ShadeExpansionStateManager shadeExpansionStateManager,
|
||||
BatteryController batteryController,
|
||||
DockManager dockManager,
|
||||
@Main DelayableExecutor mainExecutor,
|
||||
@@ -157,6 +161,8 @@ class FalsingCollectorImpl implements FalsingCollector {
|
||||
|
||||
mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback);
|
||||
|
||||
shadeExpansionStateManager.addQsExpansionListener(this::onQsExpansionChanged);
|
||||
|
||||
mBatteryController.addCallback(mBatteryListener);
|
||||
mDockManager.addListener(mDockEventListener);
|
||||
}
|
||||
@@ -193,8 +199,8 @@ class FalsingCollectorImpl implements FalsingCollector {
|
||||
public void onQsDown() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQsExpanded(boolean expanded) {
|
||||
@VisibleForTesting
|
||||
void onQsExpansionChanged(Boolean expanded) {
|
||||
if (expanded) {
|
||||
unregisterSensors();
|
||||
} else if (mSessionStarted) {
|
||||
|
||||
@@ -151,6 +151,8 @@ import com.android.systemui.media.KeyguardMediaController;
|
||||
import com.android.systemui.media.MediaDataManager;
|
||||
import com.android.systemui.media.MediaHierarchyManager;
|
||||
import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.navigationbar.NavigationBarController;
|
||||
import com.android.systemui.navigationbar.NavigationBarView;
|
||||
import com.android.systemui.navigationbar.NavigationModeController;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.FalsingManager.FalsingTapListener;
|
||||
@@ -583,6 +585,7 @@ public final class NotificationPanelViewController {
|
||||
private final SysUiState mSysUiState;
|
||||
|
||||
private final NotificationShadeDepthController mDepthController;
|
||||
private final NavigationBarController mNavigationBarController;
|
||||
private final int mDisplayId;
|
||||
|
||||
private KeyguardIndicationController mKeyguardIndicationController;
|
||||
@@ -861,6 +864,7 @@ public final class NotificationPanelViewController {
|
||||
PrivacyDotViewController privacyDotViewController,
|
||||
TapAgainViewController tapAgainViewController,
|
||||
NavigationModeController navigationModeController,
|
||||
NavigationBarController navigationBarController,
|
||||
FragmentService fragmentService,
|
||||
ContentResolver contentResolver,
|
||||
RecordingController recordingController,
|
||||
@@ -954,6 +958,7 @@ public final class NotificationPanelViewController {
|
||||
mNotificationsQSContainerController = notificationsQSContainerController;
|
||||
mNotificationListContainer = notificationListContainer;
|
||||
mNotificationStackSizeCalculator = notificationStackSizeCalculator;
|
||||
mNavigationBarController = navigationBarController;
|
||||
mKeyguardBottomAreaViewControllerProvider = keyguardBottomAreaViewControllerProvider;
|
||||
mNotificationsQSContainerController.init();
|
||||
mNotificationStackScrollLayoutController = notificationStackScrollLayoutController;
|
||||
@@ -2681,12 +2686,16 @@ public final class NotificationPanelViewController {
|
||||
mQsExpanded = expanded;
|
||||
updateQsState();
|
||||
updateExpandedHeightToMaxHeight();
|
||||
mFalsingCollector.setQsExpanded(expanded);
|
||||
mCentralSurfaces.setQsExpanded(expanded);
|
||||
mNotificationsQSContainerController.setQsExpanded(expanded);
|
||||
mPulseExpansionHandler.setQsExpanded(expanded);
|
||||
mKeyguardBypassController.setQSExpanded(expanded);
|
||||
mPrivacyDotViewController.setQsExpanded(expanded);
|
||||
setStatusAccessibilityImportance(expanded
|
||||
? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
|
||||
: View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
|
||||
updateSystemUiStateFlags();
|
||||
NavigationBarView navigationBarView =
|
||||
mNavigationBarController.getNavigationBarView(mDisplayId);
|
||||
if (navigationBarView != null) {
|
||||
navigationBarView.onStatusBarPanelStateChanged();
|
||||
}
|
||||
mShadeExpansionStateManager.onQsExpansionChanged(expanded);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5193,7 +5202,8 @@ public final class NotificationPanelViewController {
|
||||
*/
|
||||
public void updatePanelExpansionAndVisibility() {
|
||||
mShadeExpansionStateManager.onPanelExpansionChanged(
|
||||
mExpandedFraction, isExpanded(), mTracking, mExpansionDragDownAmountPx);
|
||||
mExpandedFraction, isExpanded(),
|
||||
mTracking, mExpansionDragDownAmountPx);
|
||||
updateVisibility();
|
||||
}
|
||||
|
||||
|
||||
@@ -135,7 +135,8 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
|
||||
DumpManager dumpManager,
|
||||
KeyguardStateController keyguardStateController,
|
||||
ScreenOffAnimationController screenOffAnimationController,
|
||||
AuthController authController) {
|
||||
AuthController authController,
|
||||
ShadeExpansionStateManager shadeExpansionStateManager) {
|
||||
mContext = context;
|
||||
mWindowManager = windowManager;
|
||||
mActivityManager = activityManager;
|
||||
@@ -156,6 +157,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
|
||||
.addCallback(mStateListener,
|
||||
SysuiStatusBarStateController.RANK_STATUS_BAR_WINDOW_CONTROLLER);
|
||||
configurationController.addCallback(this);
|
||||
shadeExpansionStateManager.addQsExpansionListener(this::onQsExpansionChanged);
|
||||
|
||||
float desiredPreferredRefreshRate = context.getResources()
|
||||
.getInteger(R.integer.config_keyguardRefreshRate);
|
||||
@@ -607,8 +609,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
|
||||
apply(mCurrentState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQsExpanded(boolean expanded) {
|
||||
private void onQsExpansionChanged(Boolean expanded) {
|
||||
mCurrentState.mQsExpanded = expanded;
|
||||
apply(mCurrentState);
|
||||
}
|
||||
|
||||
@@ -36,17 +36,12 @@ class NotificationsQSContainerController @Inject constructor(
|
||||
private val navigationModeController: NavigationModeController,
|
||||
private val overviewProxyService: OverviewProxyService,
|
||||
private val largeScreenShadeHeaderController: LargeScreenShadeHeaderController,
|
||||
private val shadeExpansionStateManager: ShadeExpansionStateManager,
|
||||
private val featureFlags: FeatureFlags,
|
||||
@Main private val delayableExecutor: DelayableExecutor
|
||||
) : ViewController<NotificationsQuickSettingsContainer>(view), QSContainerController {
|
||||
|
||||
var qsExpanded = false
|
||||
set(value) {
|
||||
if (field != value) {
|
||||
field = value
|
||||
mView.invalidate()
|
||||
}
|
||||
}
|
||||
private var qsExpanded = false
|
||||
private var splitShadeEnabled = false
|
||||
private var isQSDetailShowing = false
|
||||
private var isQSCustomizing = false
|
||||
@@ -71,6 +66,13 @@ class NotificationsQSContainerController @Inject constructor(
|
||||
taskbarVisible = visible
|
||||
}
|
||||
}
|
||||
private val shadeQsExpansionListener: ShadeQsExpansionListener =
|
||||
ShadeQsExpansionListener { isQsExpanded ->
|
||||
if (qsExpanded != isQsExpanded) {
|
||||
qsExpanded = isQsExpanded
|
||||
mView.invalidate()
|
||||
}
|
||||
}
|
||||
|
||||
// With certain configuration changes (like light/dark changes), the nav bar will disappear
|
||||
// for a bit, causing `bottomStableInsets` to be unstable for some time. Debounce the value
|
||||
@@ -106,6 +108,7 @@ class NotificationsQSContainerController @Inject constructor(
|
||||
public override fun onViewAttached() {
|
||||
updateResources()
|
||||
overviewProxyService.addCallback(taskbarVisibilityListener)
|
||||
shadeExpansionStateManager.addQsExpansionListener(shadeQsExpansionListener)
|
||||
mView.setInsetsChangedListener(delayedInsetSetter)
|
||||
mView.setQSFragmentAttachedListener { qs: QS -> qs.setContainerController(this) }
|
||||
mView.setConfigurationChangedListener { updateResources() }
|
||||
@@ -113,6 +116,7 @@ class NotificationsQSContainerController @Inject constructor(
|
||||
|
||||
override fun onViewDetached() {
|
||||
overviewProxyService.removeCallback(taskbarVisibilityListener)
|
||||
shadeExpansionStateManager.removeQsExpansionListener(shadeQsExpansionListener)
|
||||
mView.removeOnInsetsChangedListener()
|
||||
mView.removeQSFragmentAttachedListener()
|
||||
mView.setConfigurationChangedListener(null)
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.util.Log
|
||||
import androidx.annotation.FloatRange
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.util.Compile
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
@@ -31,12 +32,14 @@ import javax.inject.Inject
|
||||
@SysUISingleton
|
||||
class ShadeExpansionStateManager @Inject constructor() {
|
||||
|
||||
private val expansionListeners = mutableListOf<ShadeExpansionListener>()
|
||||
private val stateListeners = mutableListOf<ShadeStateListener>()
|
||||
private val expansionListeners = CopyOnWriteArrayList<ShadeExpansionListener>()
|
||||
private val qsExpansionListeners = CopyOnWriteArrayList<ShadeQsExpansionListener>()
|
||||
private val stateListeners = CopyOnWriteArrayList<ShadeStateListener>()
|
||||
|
||||
@PanelState private var state: Int = STATE_CLOSED
|
||||
@FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
|
||||
private var expanded: Boolean = false
|
||||
private var qsExpanded: Boolean = false
|
||||
private var tracking: Boolean = false
|
||||
private var dragDownPxAmount: Float = 0f
|
||||
|
||||
@@ -57,6 +60,15 @@ class ShadeExpansionStateManager @Inject constructor() {
|
||||
expansionListeners.remove(listener)
|
||||
}
|
||||
|
||||
fun addQsExpansionListener(listener: ShadeQsExpansionListener) {
|
||||
qsExpansionListeners.add(listener)
|
||||
listener.onQsExpansionChanged(qsExpanded)
|
||||
}
|
||||
|
||||
fun removeQsExpansionListener(listener: ShadeQsExpansionListener) {
|
||||
qsExpansionListeners.remove(listener)
|
||||
}
|
||||
|
||||
/** Adds a listener that will be notified when the panel state has changed. */
|
||||
fun addStateListener(listener: ShadeStateListener) {
|
||||
stateListeners.add(listener)
|
||||
@@ -126,6 +138,14 @@ class ShadeExpansionStateManager @Inject constructor() {
|
||||
expansionListeners.forEach { it.onPanelExpansionChanged(expansionChangeEvent) }
|
||||
}
|
||||
|
||||
/** Called when the quick settings expansion changes to fully expanded or collapsed. */
|
||||
fun onQsExpansionChanged(qsExpanded: Boolean) {
|
||||
this.qsExpanded = qsExpanded
|
||||
|
||||
debugLog("qsExpanded=$qsExpanded")
|
||||
qsExpansionListeners.forEach { it.onQsExpansionChanged(qsExpanded) }
|
||||
}
|
||||
|
||||
/** Updates the panel state if necessary. */
|
||||
fun updateState(@PanelState state: Int) {
|
||||
debugLog(
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2022 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.shade
|
||||
|
||||
/** A listener interface to be notified of expansion events for the quick settings panel. */
|
||||
fun interface ShadeQsExpansionListener {
|
||||
/**
|
||||
* Invoked whenever the quick settings expansion changes, when it is fully collapsed or expanded
|
||||
*/
|
||||
fun onQsExpansionChanged(isQsExpanded: Boolean)
|
||||
}
|
||||
@@ -92,9 +92,6 @@ public interface NotificationShadeWindowController extends RemoteInputController
|
||||
/** Sets the state of whether the keyguard is fading away or not. */
|
||||
default void setKeyguardFadingAway(boolean keyguardFadingAway) {}
|
||||
|
||||
/** Sets the state of whether the quick settings is expanded or not. */
|
||||
default void setQsExpanded(boolean expanded) {}
|
||||
|
||||
/** Sets the state of whether the user activities are forced or not. */
|
||||
default void setForceUserActivity(boolean forceUserActivity) {}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.FalsingManager
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableView
|
||||
@@ -68,6 +69,7 @@ constructor(
|
||||
configurationController: ConfigurationController,
|
||||
private val statusBarStateController: StatusBarStateController,
|
||||
private val falsingManager: FalsingManager,
|
||||
shadeExpansionStateManager: ShadeExpansionStateManager,
|
||||
private val lockscreenShadeTransitionController: LockscreenShadeTransitionController,
|
||||
private val falsingCollector: FalsingCollector,
|
||||
dumpManager: DumpManager
|
||||
@@ -126,6 +128,13 @@ constructor(
|
||||
initResources(context)
|
||||
}
|
||||
})
|
||||
|
||||
shadeExpansionStateManager.addQsExpansionListener { isQsExpanded ->
|
||||
if (qsExpanded != isQsExpanded) {
|
||||
qsExpanded = isQsExpanded
|
||||
}
|
||||
}
|
||||
|
||||
mPowerManager = context.getSystemService(PowerManager::class.java)
|
||||
dumpManager.registerDumpable(this)
|
||||
}
|
||||
|
||||
@@ -25,11 +25,12 @@ import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import com.android.internal.annotations.GuardedBy
|
||||
import com.android.systemui.animation.Interpolators
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.animation.Interpolators
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager
|
||||
import com.android.systemui.statusbar.StatusBarState.SHADE
|
||||
import com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED
|
||||
import com.android.systemui.statusbar.phone.StatusBarContentInsetsChangedListener
|
||||
@@ -42,7 +43,6 @@ import com.android.systemui.util.leak.RotationUtils.ROTATION_NONE
|
||||
import com.android.systemui.util.leak.RotationUtils.ROTATION_SEASCAPE
|
||||
import com.android.systemui.util.leak.RotationUtils.ROTATION_UPSIDE_DOWN
|
||||
import com.android.systemui.util.leak.RotationUtils.Rotation
|
||||
|
||||
import java.util.concurrent.Executor
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -67,7 +67,8 @@ class PrivacyDotViewController @Inject constructor(
|
||||
private val stateController: StatusBarStateController,
|
||||
private val configurationController: ConfigurationController,
|
||||
private val contentInsetsProvider: StatusBarContentInsetsProvider,
|
||||
private val animationScheduler: SystemStatusAnimationScheduler
|
||||
private val animationScheduler: SystemStatusAnimationScheduler,
|
||||
shadeExpansionStateManager: ShadeExpansionStateManager
|
||||
) {
|
||||
private lateinit var tl: View
|
||||
private lateinit var tr: View
|
||||
@@ -128,6 +129,13 @@ class PrivacyDotViewController @Inject constructor(
|
||||
updateStatusBarState()
|
||||
}
|
||||
})
|
||||
|
||||
shadeExpansionStateManager.addQsExpansionListener { isQsExpanded ->
|
||||
dlog("setQsExpanded $isQsExpanded")
|
||||
synchronized(lock) {
|
||||
nextViewState = nextViewState.copy(qsExpanded = isQsExpanded)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setUiExecutor(e: DelayableExecutor) {
|
||||
@@ -138,13 +146,6 @@ class PrivacyDotViewController @Inject constructor(
|
||||
showingListener = l
|
||||
}
|
||||
|
||||
fun setQsExpanded(expanded: Boolean) {
|
||||
dlog("setQsExpanded $expanded")
|
||||
synchronized(lock) {
|
||||
nextViewState = nextViewState.copy(qsExpanded = expanded)
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun setNewRotation(rot: Int) {
|
||||
dlog("updateRotation: $rot")
|
||||
|
||||
@@ -262,8 +262,6 @@ public interface CentralSurfaces extends Dumpable, ActivityStarter, LifecycleOwn
|
||||
@Override
|
||||
void startActivity(Intent intent, boolean dismissShade, Callback callback);
|
||||
|
||||
void setQsExpanded(boolean expanded);
|
||||
|
||||
boolean isWakeUpComingFromTouch();
|
||||
|
||||
boolean isFalsingThresholdNeeded();
|
||||
|
||||
@@ -1795,18 +1795,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
null /* animationController */, getActivityUserHandle(intent));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQsExpanded(boolean expanded) {
|
||||
mNotificationShadeWindowController.setQsExpanded(expanded);
|
||||
mNotificationPanelViewController.setStatusAccessibilityImportance(expanded
|
||||
? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
|
||||
: View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
|
||||
mNotificationPanelViewController.updateSystemUiStateFlags();
|
||||
if (getNavigationBarView() != null) {
|
||||
getNavigationBarView().onStatusBarPanelStateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWakeUpComingFromTouch() {
|
||||
return mWakeUpComingFromTouch;
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.android.systemui.R
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager
|
||||
import com.android.systemui.statusbar.StatusBarState
|
||||
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm
|
||||
@@ -95,14 +96,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
||||
var bouncerShowing: Boolean = false
|
||||
var altBouncerShowing: Boolean = false
|
||||
var launchingAffordance: Boolean = false
|
||||
var qSExpanded = false
|
||||
set(value) {
|
||||
val changed = field != value
|
||||
field = value
|
||||
if (changed && !value) {
|
||||
maybePerformPendingUnlock()
|
||||
}
|
||||
}
|
||||
var qsExpanded = false
|
||||
|
||||
@Inject
|
||||
constructor(
|
||||
@@ -111,6 +105,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
||||
statusBarStateController: StatusBarStateController,
|
||||
lockscreenUserManager: NotificationLockscreenUserManager,
|
||||
keyguardStateController: KeyguardStateController,
|
||||
shadeExpansionStateManager: ShadeExpansionStateManager,
|
||||
dumpManager: DumpManager
|
||||
) {
|
||||
this.mKeyguardStateController = keyguardStateController
|
||||
@@ -132,6 +127,14 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
||||
}
|
||||
})
|
||||
|
||||
shadeExpansionStateManager.addQsExpansionListener { isQsExpanded ->
|
||||
val changed = qsExpanded != isQsExpanded
|
||||
qsExpanded = isQsExpanded
|
||||
if (changed && !isQsExpanded) {
|
||||
maybePerformPendingUnlock()
|
||||
}
|
||||
}
|
||||
|
||||
val dismissByDefault = if (context.resources.getBoolean(
|
||||
com.android.internal.R.bool.config_faceAuthDismissesKeyguard)) 1 else 0
|
||||
tunerService.addTunable(object : TunerService.Tunable {
|
||||
@@ -160,7 +163,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
||||
): Boolean {
|
||||
if (biometricSourceType == BiometricSourceType.FACE && bypassEnabled) {
|
||||
val can = canBypass()
|
||||
if (!can && (isPulseExpanding || qSExpanded)) {
|
||||
if (!can && (isPulseExpanding || qsExpanded)) {
|
||||
pendingUnlock = PendingUnlock(biometricSourceType, isStrongBiometric)
|
||||
}
|
||||
return can
|
||||
@@ -189,7 +192,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
||||
altBouncerShowing -> true
|
||||
statusBarStateController.state != StatusBarState.KEYGUARD -> false
|
||||
launchingAffordance -> false
|
||||
isPulseExpanding || qSExpanded -> false
|
||||
isPulseExpanding || qsExpanded -> false
|
||||
else -> true
|
||||
}
|
||||
}
|
||||
@@ -214,7 +217,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
||||
pw.println(" altBouncerShowing: $altBouncerShowing")
|
||||
pw.println(" isPulseExpanding: $isPulseExpanding")
|
||||
pw.println(" launchingAffordance: $launchingAffordance")
|
||||
pw.println(" qSExpanded: $qSExpanded")
|
||||
pw.println(" qSExpanded: $qsExpanded")
|
||||
pw.println(" hasFaceFeature: $hasFaceFeature")
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.dock.DockManagerFake;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
@@ -71,6 +72,8 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private KeyguardStateController mKeyguardStateController;
|
||||
@Mock
|
||||
private ShadeExpansionStateManager mShadeExpansionStateManager;
|
||||
@Mock
|
||||
private BatteryController mBatteryController;
|
||||
private final DockManagerFake mDockManager = new DockManagerFake();
|
||||
private final FakeSystemClock mFakeSystemClock = new FakeSystemClock();
|
||||
@@ -85,7 +88,8 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
|
||||
|
||||
mFalsingCollector = new FalsingCollectorImpl(mFalsingDataProvider, mFalsingManager,
|
||||
mKeyguardUpdateMonitor, mHistoryTracker, mProximitySensor,
|
||||
mStatusBarStateController, mKeyguardStateController, mBatteryController,
|
||||
mStatusBarStateController, mKeyguardStateController, mShadeExpansionStateManager,
|
||||
mBatteryController,
|
||||
mDockManager, mFakeExecutor, mFakeSystemClock);
|
||||
}
|
||||
|
||||
@@ -137,9 +141,9 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
|
||||
public void testUnregisterSensor_QS() {
|
||||
mFalsingCollector.onScreenTurningOn();
|
||||
reset(mProximitySensor);
|
||||
mFalsingCollector.setQsExpanded(true);
|
||||
mFalsingCollector.onQsExpansionChanged(true);
|
||||
verify(mProximitySensor).unregister(any(ThresholdSensor.Listener.class));
|
||||
mFalsingCollector.setQsExpanded(false);
|
||||
mFalsingCollector.onQsExpansionChanged(false);
|
||||
verify(mProximitySensor).register(any(ThresholdSensor.Listener.class));
|
||||
}
|
||||
|
||||
|
||||
@@ -108,6 +108,7 @@ import com.android.systemui.media.KeyguardMediaController;
|
||||
import com.android.systemui.media.MediaDataManager;
|
||||
import com.android.systemui.media.MediaHierarchyManager;
|
||||
import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.navigationbar.NavigationBarController;
|
||||
import com.android.systemui.navigationbar.NavigationModeController;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.qs.QS;
|
||||
@@ -254,6 +255,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
@Mock private KeyguardMediaController mKeyguardMediaController;
|
||||
@Mock private PrivacyDotViewController mPrivacyDotViewController;
|
||||
@Mock private NavigationModeController mNavigationModeController;
|
||||
@Mock private NavigationBarController mNavigationBarController;
|
||||
@Mock private LargeScreenShadeHeaderController mLargeScreenShadeHeaderController;
|
||||
@Mock private ContentResolver mContentResolver;
|
||||
@Mock private TapAgainViewController mTapAgainViewController;
|
||||
@@ -393,6 +395,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
mConfigurationController,
|
||||
mStatusBarStateController,
|
||||
mFalsingManager,
|
||||
mShadeExpansionStateManager,
|
||||
mLockscreenShadeTransitionController,
|
||||
new FalsingCollectorFake(),
|
||||
mDumpManager);
|
||||
@@ -431,6 +434,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
when(mView.getParent()).thenReturn(mViewParent);
|
||||
when(mQs.getHeader()).thenReturn(mQsHeader);
|
||||
when(mDownMotionEvent.getAction()).thenReturn(MotionEvent.ACTION_DOWN);
|
||||
when(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState);
|
||||
|
||||
mMainHandler = new Handler(Looper.getMainLooper());
|
||||
NotificationPanelViewController.PanelEventsEmitter panelEventsEmitter =
|
||||
@@ -474,6 +478,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
mPrivacyDotViewController,
|
||||
mTapAgainViewController,
|
||||
mNavigationModeController,
|
||||
mNavigationBarController,
|
||||
mFragmentService,
|
||||
mContentResolver,
|
||||
mRecordingController,
|
||||
|
||||
@@ -66,6 +66,8 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
|
||||
@Mock
|
||||
private lateinit var largeScreenShadeHeaderController: LargeScreenShadeHeaderController
|
||||
@Mock
|
||||
private lateinit var shadeExpansionStateManager: ShadeExpansionStateManager
|
||||
@Mock
|
||||
private lateinit var featureFlags: FeatureFlags
|
||||
@Captor
|
||||
lateinit var navigationModeCaptor: ArgumentCaptor<ModeChangedListener>
|
||||
@@ -96,6 +98,7 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
|
||||
navigationModeController,
|
||||
overviewProxyService,
|
||||
largeScreenShadeHeaderController,
|
||||
shadeExpansionStateManager,
|
||||
featureFlags,
|
||||
delayableExecutor
|
||||
)
|
||||
@@ -380,6 +383,7 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
|
||||
navigationModeController,
|
||||
overviewProxyService,
|
||||
largeScreenShadeHeaderController,
|
||||
shadeExpansionStateManager,
|
||||
featureFlags,
|
||||
delayableExecutor
|
||||
)
|
||||
|
||||
@@ -88,6 +88,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase {
|
||||
@Mock private KeyguardStateController mKeyguardStateController;
|
||||
@Mock private ScreenOffAnimationController mScreenOffAnimationController;
|
||||
@Mock private AuthController mAuthController;
|
||||
@Mock private ShadeExpansionStateManager mShadeExpansionStateManager;
|
||||
@Captor private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters;
|
||||
|
||||
private NotificationShadeWindowControllerImpl mNotificationShadeWindowController;
|
||||
@@ -103,7 +104,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase {
|
||||
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
||||
mColorExtractor, mDumpManager, mKeyguardStateController,
|
||||
mScreenOffAnimationController, mAuthController) {
|
||||
mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager) {
|
||||
@Override
|
||||
protected boolean isDebuggable() {
|
||||
return false;
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.android.systemui.classifier.FalsingCollector
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.FalsingManager
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableView
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationRoundnessManager
|
||||
@@ -56,6 +57,7 @@ class PulseExpansionHandlerTest : SysuiTestCase() {
|
||||
private val configurationController: ConfigurationController = mock()
|
||||
private val statusBarStateController: StatusBarStateController = mock()
|
||||
private val falsingManager: FalsingManager = mock()
|
||||
private val shadeExpansionStateManager: ShadeExpansionStateManager = mock()
|
||||
private val lockscreenShadeTransitionController: LockscreenShadeTransitionController = mock()
|
||||
private val falsingCollector: FalsingCollector = mock()
|
||||
private val dumpManager: DumpManager = mock()
|
||||
@@ -65,7 +67,8 @@ class PulseExpansionHandlerTest : SysuiTestCase() {
|
||||
fun setUp() {
|
||||
whenever(expandableView.collapsedHeight).thenReturn(collapsedHeight)
|
||||
|
||||
pulseExpansionHandler = PulseExpansionHandler(
|
||||
pulseExpansionHandler =
|
||||
PulseExpansionHandler(
|
||||
mContext,
|
||||
wakeUpCoordinator,
|
||||
bypassController,
|
||||
@@ -74,10 +77,11 @@ class PulseExpansionHandlerTest : SysuiTestCase() {
|
||||
configurationController,
|
||||
statusBarStateController,
|
||||
falsingManager,
|
||||
shadeExpansionStateManager,
|
||||
lockscreenShadeTransitionController,
|
||||
falsingCollector,
|
||||
dumpManager
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -92,6 +92,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.shade.NotificationShadeWindowControllerImpl;
|
||||
import com.android.systemui.shade.NotificationShadeWindowView;
|
||||
import com.android.systemui.shade.ShadeController;
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
||||
import com.android.systemui.statusbar.RankingBuilder;
|
||||
@@ -191,6 +192,8 @@ public class BubblesTest extends SysuiTestCase {
|
||||
private NotificationShadeWindowView mNotificationShadeWindowView;
|
||||
@Mock
|
||||
private AuthController mAuthController;
|
||||
@Mock
|
||||
private ShadeExpansionStateManager mShadeExpansionStateManager;
|
||||
|
||||
private SysUiState mSysUiState;
|
||||
private boolean mSysUiStateBubblesExpanded;
|
||||
@@ -291,7 +294,7 @@ public class BubblesTest extends SysuiTestCase {
|
||||
mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController,
|
||||
mColorExtractor, mDumpManager, mKeyguardStateController,
|
||||
mScreenOffAnimationController, mAuthController);
|
||||
mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager);
|
||||
mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
|
||||
mNotificationShadeWindowController.attach();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user