Merge "Pause region sampling while blurring the shade" into sc-dev
This commit is contained in:
@@ -77,6 +77,7 @@ import com.android.systemui.shared.system.TaskStackChangeListeners;
|
|||||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||||
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||||
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
|
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
@@ -227,6 +228,7 @@ public class DependencyProvider {
|
|||||||
Lazy<StatusBar> statusBarLazy,
|
Lazy<StatusBar> statusBarLazy,
|
||||||
ShadeController shadeController,
|
ShadeController shadeController,
|
||||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||||
|
NotificationShadeDepthController notificationShadeDepthController,
|
||||||
SystemActions systemActions,
|
SystemActions systemActions,
|
||||||
@Main Handler mainHandler,
|
@Main Handler mainHandler,
|
||||||
UiEventLogger uiEventLogger,
|
UiEventLogger uiEventLogger,
|
||||||
@@ -253,6 +255,7 @@ public class DependencyProvider {
|
|||||||
statusBarLazy,
|
statusBarLazy,
|
||||||
shadeController,
|
shadeController,
|
||||||
notificationRemoteInputManager,
|
notificationRemoteInputManager,
|
||||||
|
notificationShadeDepthController,
|
||||||
systemActions,
|
systemActions,
|
||||||
mainHandler,
|
mainHandler,
|
||||||
uiEventLogger,
|
uiEventLogger,
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ import com.android.systemui.statusbar.AutoHideUiElement;
|
|||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||||
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.StatusBarState;
|
import com.android.systemui.statusbar.StatusBarState;
|
||||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
||||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||||
@@ -201,6 +202,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
private final NavigationBarOverlayController mNavbarOverlayController;
|
private final NavigationBarOverlayController mNavbarOverlayController;
|
||||||
private final UiEventLogger mUiEventLogger;
|
private final UiEventLogger mUiEventLogger;
|
||||||
private final UserTracker mUserTracker;
|
private final UserTracker mUserTracker;
|
||||||
|
private final NotificationShadeDepthController mNotificationShadeDepthController;
|
||||||
|
|
||||||
private Bundle mSavedState;
|
private Bundle mSavedState;
|
||||||
private NavigationBarView mNavigationBarView;
|
private NavigationBarView mNavigationBarView;
|
||||||
@@ -438,6 +440,25 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final NotificationShadeDepthController.DepthListener mDepthListener =
|
||||||
|
new NotificationShadeDepthController.DepthListener() {
|
||||||
|
boolean mHasBlurs;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWallpaperZoomOutChanged(float zoomOut) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBlurRadiusChanged(int radius) {
|
||||||
|
boolean hasBlurs = radius != 0;
|
||||||
|
if (hasBlurs == mHasBlurs) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mHasBlurs = hasBlurs;
|
||||||
|
mNavigationBarView.setWindowHasBlurs(hasBlurs);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public NavigationBar(Context context,
|
public NavigationBar(Context context,
|
||||||
WindowManager windowManager,
|
WindowManager windowManager,
|
||||||
Lazy<AssistManager> assistManagerLazy,
|
Lazy<AssistManager> assistManagerLazy,
|
||||||
@@ -457,6 +478,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
Optional<Recents> recentsOptional, Lazy<StatusBar> statusBarLazy,
|
Optional<Recents> recentsOptional, Lazy<StatusBar> statusBarLazy,
|
||||||
ShadeController shadeController,
|
ShadeController shadeController,
|
||||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||||
|
NotificationShadeDepthController notificationShadeDepthController,
|
||||||
SystemActions systemActions,
|
SystemActions systemActions,
|
||||||
@Main Handler mainHandler,
|
@Main Handler mainHandler,
|
||||||
NavigationBarOverlayController navbarOverlayController,
|
NavigationBarOverlayController navbarOverlayController,
|
||||||
@@ -487,6 +509,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mNavbarOverlayController = navbarOverlayController;
|
mNavbarOverlayController = navbarOverlayController;
|
||||||
mUiEventLogger = uiEventLogger;
|
mUiEventLogger = uiEventLogger;
|
||||||
mUserTracker = userTracker;
|
mUserTracker = userTracker;
|
||||||
|
mNotificationShadeDepthController = notificationShadeDepthController;
|
||||||
|
|
||||||
mNavBarMode = mNavigationModeController.addListener(this);
|
mNavBarMode = mNavigationModeController.addListener(this);
|
||||||
mAccessibilityButtonModeObserver.addListener(this);
|
mAccessibilityButtonModeObserver.addListener(this);
|
||||||
@@ -570,6 +593,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
|
|
||||||
mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
|
mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
|
||||||
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
mDeviceProvisionedController.addCallback(mUserSetupListener);
|
||||||
|
mNotificationShadeDepthController.addListener(mDepthListener);
|
||||||
|
|
||||||
setAccessibilityFloatingMenuModeIfNeeded();
|
setAccessibilityFloatingMenuModeIfNeeded();
|
||||||
|
|
||||||
@@ -586,6 +610,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
mAccessibilityManagerWrapper.removeCallback(mAccessibilityListener);
|
mAccessibilityManagerWrapper.removeCallback(mAccessibilityListener);
|
||||||
mContentResolver.unregisterContentObserver(mAssistContentObserver);
|
mContentResolver.unregisterContentObserver(mAssistContentObserver);
|
||||||
mDeviceProvisionedController.removeCallback(mUserSetupListener);
|
mDeviceProvisionedController.removeCallback(mUserSetupListener);
|
||||||
|
mNotificationShadeDepthController.removeListener(mDepthListener);
|
||||||
|
|
||||||
DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener);
|
DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ import com.android.systemui.settings.UserTracker;
|
|||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||||
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
|
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
@@ -115,6 +116,7 @@ public class NavigationBarController implements Callbacks,
|
|||||||
private final DisplayManager mDisplayManager;
|
private final DisplayManager mDisplayManager;
|
||||||
private final NavigationBarOverlayController mNavBarOverlayController;
|
private final NavigationBarOverlayController mNavBarOverlayController;
|
||||||
private final TaskbarDelegate mTaskbarDelegate;
|
private final TaskbarDelegate mTaskbarDelegate;
|
||||||
|
private final NotificationShadeDepthController mNotificationShadeDepthController;
|
||||||
private int mNavMode;
|
private int mNavMode;
|
||||||
private boolean mIsTablet;
|
private boolean mIsTablet;
|
||||||
private final UserTracker mUserTracker;
|
private final UserTracker mUserTracker;
|
||||||
@@ -149,6 +151,7 @@ public class NavigationBarController implements Callbacks,
|
|||||||
Lazy<StatusBar> statusBarLazy,
|
Lazy<StatusBar> statusBarLazy,
|
||||||
ShadeController shadeController,
|
ShadeController shadeController,
|
||||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||||
|
NotificationShadeDepthController notificationShadeDepthController,
|
||||||
SystemActions systemActions,
|
SystemActions systemActions,
|
||||||
@Main Handler mainHandler,
|
@Main Handler mainHandler,
|
||||||
UiEventLogger uiEventLogger,
|
UiEventLogger uiEventLogger,
|
||||||
@@ -175,6 +178,7 @@ public class NavigationBarController implements Callbacks,
|
|||||||
mStatusBarLazy = statusBarLazy;
|
mStatusBarLazy = statusBarLazy;
|
||||||
mShadeController = shadeController;
|
mShadeController = shadeController;
|
||||||
mNotificationRemoteInputManager = notificationRemoteInputManager;
|
mNotificationRemoteInputManager = notificationRemoteInputManager;
|
||||||
|
mNotificationShadeDepthController = notificationShadeDepthController;
|
||||||
mSystemActions = systemActions;
|
mSystemActions = systemActions;
|
||||||
mUiEventLogger = uiEventLogger;
|
mUiEventLogger = uiEventLogger;
|
||||||
mHandler = mainHandler;
|
mHandler = mainHandler;
|
||||||
@@ -362,6 +366,7 @@ public class NavigationBarController implements Callbacks,
|
|||||||
mStatusBarLazy,
|
mStatusBarLazy,
|
||||||
mShadeController,
|
mShadeController,
|
||||||
mNotificationRemoteInputManager,
|
mNotificationRemoteInputManager,
|
||||||
|
mNotificationShadeDepthController,
|
||||||
mSystemActions,
|
mSystemActions,
|
||||||
mHandler,
|
mHandler,
|
||||||
mNavBarOverlayController,
|
mNavBarOverlayController,
|
||||||
|
|||||||
@@ -413,6 +413,13 @@ public class NavigationBarView extends FrameLayout implements
|
|||||||
return super.onTouchEvent(event);
|
return super.onTouchEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we're blurring the shade window.
|
||||||
|
*/
|
||||||
|
public void setWindowHasBlurs(boolean hasBlurs) {
|
||||||
|
mRegionSamplingHelper.setWindowHasBlurs(hasBlurs);
|
||||||
|
}
|
||||||
|
|
||||||
void onTransientStateChanged(boolean isTransient) {
|
void onTransientStateChanged(boolean isTransient) {
|
||||||
mEdgeBackGestureHandler.onNavBarTransientStateChanged(isTransient);
|
mEdgeBackGestureHandler.onNavBarTransientStateChanged(isTransient);
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public class RegionSamplingHelper implements View.OnAttachStateChangeListener,
|
|||||||
private final float mLuminanceChangeThreshold;
|
private final float mLuminanceChangeThreshold;
|
||||||
private boolean mFirstSamplingAfterStart;
|
private boolean mFirstSamplingAfterStart;
|
||||||
private boolean mWindowVisible;
|
private boolean mWindowVisible;
|
||||||
|
private boolean mWindowHasBlurs;
|
||||||
private SurfaceControl mRegisteredStopLayer = null;
|
private SurfaceControl mRegisteredStopLayer = null;
|
||||||
private ViewTreeObserver.OnDrawListener mUpdateOnDraw = new ViewTreeObserver.OnDrawListener() {
|
private ViewTreeObserver.OnDrawListener mUpdateOnDraw = new ViewTreeObserver.OnDrawListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -153,6 +154,7 @@ public class RegionSamplingHelper implements View.OnAttachStateChangeListener,
|
|||||||
boolean isSamplingEnabled = mSamplingEnabled
|
boolean isSamplingEnabled = mSamplingEnabled
|
||||||
&& !mSamplingRequestBounds.isEmpty()
|
&& !mSamplingRequestBounds.isEmpty()
|
||||||
&& mWindowVisible
|
&& mWindowVisible
|
||||||
|
&& !mWindowHasBlurs
|
||||||
&& (mSampledView.isAttachedToWindow() || mFirstSamplingAfterStart);
|
&& (mSampledView.isAttachedToWindow() || mFirstSamplingAfterStart);
|
||||||
if (isSamplingEnabled) {
|
if (isSamplingEnabled) {
|
||||||
ViewRootImpl viewRootImpl = mSampledView.getViewRootImpl();
|
ViewRootImpl viewRootImpl = mSampledView.getViewRootImpl();
|
||||||
@@ -225,6 +227,14 @@ public class RegionSamplingHelper implements View.OnAttachStateChangeListener,
|
|||||||
updateSamplingListener();
|
updateSamplingListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we're blurring the shade window.
|
||||||
|
*/
|
||||||
|
public void setWindowHasBlurs(boolean hasBlurs) {
|
||||||
|
mWindowHasBlurs = hasBlurs;
|
||||||
|
updateSamplingListener();
|
||||||
|
}
|
||||||
|
|
||||||
public void dump(PrintWriter pw) {
|
public void dump(PrintWriter pw) {
|
||||||
pw.println("RegionSamplingHelper:");
|
pw.println("RegionSamplingHelper:");
|
||||||
pw.println(" sampleView isAttached: " + mSampledView.isAttachedToWindow());
|
pw.println(" sampleView isAttached: " + mSampledView.isAttachedToWindow());
|
||||||
@@ -238,6 +248,7 @@ public class RegionSamplingHelper implements View.OnAttachStateChangeListener,
|
|||||||
pw.println(" mLastMedianLuma: " + mLastMedianLuma);
|
pw.println(" mLastMedianLuma: " + mLastMedianLuma);
|
||||||
pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma);
|
pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma);
|
||||||
pw.println(" mWindowVisible: " + mWindowVisible);
|
pw.println(" mWindowVisible: " + mWindowVisible);
|
||||||
|
pw.println(" mWindowHasBlurs: " + mWindowHasBlurs);
|
||||||
pw.println(" mWaitingOnDraw: " + mWaitingOnDraw);
|
pw.println(" mWaitingOnDraw: " + mWaitingOnDraw);
|
||||||
pw.println(" mRegisteredStopLayer: " + mRegisteredStopLayer);
|
pw.println(" mRegisteredStopLayer: " + mRegisteredStopLayer);
|
||||||
pw.println(" mIsDestroyed: " + mIsDestroyed);
|
pw.println(" mIsDestroyed: " + mIsDestroyed);
|
||||||
|
|||||||
@@ -210,6 +210,7 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
}
|
}
|
||||||
listeners.forEach {
|
listeners.forEach {
|
||||||
it.onWallpaperZoomOutChanged(zoomOut)
|
it.onWallpaperZoomOutChanged(zoomOut)
|
||||||
|
it.onBlurRadiusChanged(blur)
|
||||||
}
|
}
|
||||||
notificationShadeWindowController.setBackgroundBlurRadius(blur)
|
notificationShadeWindowController.setBackgroundBlurRadius(blur)
|
||||||
}
|
}
|
||||||
@@ -513,5 +514,8 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
* Current wallpaper zoom out, where 0 is the closest, and 1 the farthest
|
* Current wallpaper zoom out, where 0 is the closest, and 1 the farthest
|
||||||
*/
|
*/
|
||||||
fun onWallpaperZoomOutChanged(zoomOut: Float)
|
fun onWallpaperZoomOutChanged(zoomOut: Float)
|
||||||
|
|
||||||
|
@JvmDefault
|
||||||
|
fun onBlurRadiusChanged(blurRadius: Int) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ import com.android.systemui.recents.Recents;
|
|||||||
import com.android.systemui.settings.UserTracker;
|
import com.android.systemui.settings.UserTracker;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||||
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
||||||
@@ -105,6 +106,7 @@ public class NavigationBarControllerTest extends SysuiTestCase {
|
|||||||
() -> mock(StatusBar.class),
|
() -> mock(StatusBar.class),
|
||||||
mock(ShadeController.class),
|
mock(ShadeController.class),
|
||||||
mock(NotificationRemoteInputManager.class),
|
mock(NotificationRemoteInputManager.class),
|
||||||
|
mock(NotificationShadeDepthController.class),
|
||||||
mock(SystemActions.class),
|
mock(SystemActions.class),
|
||||||
Dependency.get(Dependency.MAIN_HANDLER),
|
Dependency.get(Dependency.MAIN_HANDLER),
|
||||||
mock(UiEventLogger.class),
|
mock(UiEventLogger.class),
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ import com.android.systemui.recents.Recents;
|
|||||||
import com.android.systemui.settings.UserTracker;
|
import com.android.systemui.settings.UserTracker;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||||
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.phone.ShadeController;
|
import com.android.systemui.statusbar.phone.ShadeController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
||||||
@@ -274,6 +275,7 @@ public class NavigationBarTest extends SysuiTestCase {
|
|||||||
() -> mock(StatusBar.class),
|
() -> mock(StatusBar.class),
|
||||||
mock(ShadeController.class),
|
mock(ShadeController.class),
|
||||||
mock(NotificationRemoteInputManager.class),
|
mock(NotificationRemoteInputManager.class),
|
||||||
|
mock(NotificationShadeDepthController.class),
|
||||||
mock(SystemActions.class),
|
mock(SystemActions.class),
|
||||||
mHandler,
|
mHandler,
|
||||||
mock(NavigationBarOverlayController.class),
|
mock(NavigationBarOverlayController.class),
|
||||||
|
|||||||
Reference in New Issue
Block a user