Merge "[Ongoing Call] Show semi-transparent background behind status bar in immersive mode." into sc-v2-dev am: a9129a5f9d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15785552

Change-Id: I36f38feb36fcf47702de1888ed6d281dc6df9fa2
This commit is contained in:
Caitlin Cassidy
2021-10-08 16:02:31 +00:00
committed by Automerger Merge Worker
3 changed files with 19 additions and 8 deletions

View File

@@ -109,9 +109,8 @@ public interface StatusBarStateController {
* Callback to be notified when the fullscreen or immersive state changes. * Callback to be notified when the fullscreen or immersive state changes.
* *
* @param isFullscreen if any of the system bar is hidden by the focused window. * @param isFullscreen if any of the system bar is hidden by the focused window.
* @param isImmersive if the navigation bar can stay hidden when the display gets tapped.
*/ */
default void onFullscreenStateChanged(boolean isFullscreen, boolean isImmersive) {} default void onFullscreenStateChanged(boolean isFullscreen) {}
/** /**
* Callback to be notified when the pulsing state changes * Callback to be notified when the pulsing state changes

View File

@@ -446,7 +446,7 @@ public class StatusBarStateControllerImpl implements
mIsFullscreen = isFullscreen; mIsFullscreen = isFullscreen;
synchronized (mListeners) { synchronized (mListeners) {
for (RankedListener rl : new ArrayList<>(mListeners)) { for (RankedListener rl : new ArrayList<>(mListeners)) {
rl.mListener.onFullscreenStateChanged(isFullscreen, true /* isImmersive */); rl.mListener.onFullscreenStateChanged(isFullscreen);
} }
} }
} }

View File

@@ -628,6 +628,7 @@ public class StatusBar extends SystemUI implements
private final Executor mUiBgExecutor; private final Executor mUiBgExecutor;
protected boolean mDozing; protected boolean mDozing;
private boolean mIsFullscreen;
private final NotificationMediaManager mMediaManager; private final NotificationMediaManager mMediaManager;
private final NotificationLockscreenUserManager mLockscreenUserManager; private final NotificationLockscreenUserManager mLockscreenUserManager;
@@ -909,6 +910,9 @@ public class StatusBar extends SystemUI implements
mActivityLaunchAnimator = activityLaunchAnimator; mActivityLaunchAnimator = activityLaunchAnimator;
mDialogLaunchAnimator = dialogLaunchAnimator; mDialogLaunchAnimator = dialogLaunchAnimator;
// The status bar background may need updating when the ongoing call status changes.
mOngoingCallController.addCallback((animate) -> maybeUpdateBarMode());
// TODO(b/190746471): Find a better home for this. // TODO(b/190746471): Find a better home for this.
DateTimeView.setReceiverHandler(timeTickHandler); DateTimeView.setReceiverHandler(timeTickHandler);
@@ -2243,7 +2247,7 @@ public class StatusBar extends SystemUI implements
if (!mTransientShown) { if (!mTransientShown) {
mTransientShown = true; mTransientShown = true;
mNoAnimationOnNextBarModeChange = true; mNoAnimationOnNextBarModeChange = true;
handleTransientChanged(); maybeUpdateBarMode();
} }
} }
@@ -2251,11 +2255,11 @@ public class StatusBar extends SystemUI implements
void clearTransient() { void clearTransient() {
if (mTransientShown) { if (mTransientShown) {
mTransientShown = false; mTransientShown = false;
handleTransientChanged(); maybeUpdateBarMode();
} }
} }
private void handleTransientChanged() { private void maybeUpdateBarMode() {
final int barMode = barMode(mTransientShown, mAppearance); final int barMode = barMode(mTransientShown, mAppearance);
if (updateBarMode(barMode)) { if (updateBarMode(barMode)) {
mLightBarController.onStatusBarModeChanged(barMode); mLightBarController.onStatusBarModeChanged(barMode);
@@ -2273,9 +2277,11 @@ public class StatusBar extends SystemUI implements
return false; return false;
} }
private static @TransitionMode int barMode(boolean isTransient, int appearance) { private @TransitionMode int barMode(boolean isTransient, int appearance) {
final int lightsOutOpaque = APPEARANCE_LOW_PROFILE_BARS | APPEARANCE_OPAQUE_STATUS_BARS; final int lightsOutOpaque = APPEARANCE_LOW_PROFILE_BARS | APPEARANCE_OPAQUE_STATUS_BARS;
if (isTransient) { if (mOngoingCallController.hasOngoingCall() && mIsFullscreen) {
return MODE_SEMI_TRANSPARENT;
} else if (isTransient) {
return MODE_SEMI_TRANSPARENT; return MODE_SEMI_TRANSPARENT;
} else if ((appearance & lightsOutOpaque) == lightsOutOpaque) { } else if ((appearance & lightsOutOpaque) == lightsOutOpaque) {
return MODE_LIGHTS_OUT; return MODE_LIGHTS_OUT;
@@ -4477,6 +4483,12 @@ public class StatusBar extends SystemUI implements
updateReportRejectedTouchVisibility(); updateReportRejectedTouchVisibility();
Trace.endSection(); Trace.endSection();
} }
@Override
public void onFullscreenStateChanged(boolean isFullscreen) {
mIsFullscreen = isFullscreen;
maybeUpdateBarMode();
}
}; };
private final BatteryController.BatteryStateChangeCallback mBatteryStateChangeCallback = private final BatteryController.BatteryStateChangeCallback mBatteryStateChangeCallback =