Add callbacks to StatusBarStateController
So plugins can receive this information without an IPC call
Test: manual
Bug: 133783909
Change-Id: I716ed6af78ab5a80a36fb680bc5d42758766523d
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java
index 3ee69b4..fe547a0a 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java
@@ -18,7 +18,6 @@
import com.android.systemui.plugins.annotations.DependsOn;
import com.android.systemui.plugins.annotations.ProvidesInterface;
-import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
/**
@@ -94,5 +93,15 @@
* performance regressions.
*/
default void onDozeAmountChanged(float linear, float eased) {}
+
+ /**
+ * Callback to be notified when the sysui visibility changes
+ */
+ default void onSystemUiVisibilityChanged(int visibility) {}
+
+ /**
+ * Callback to be notified when the pulsing state changes
+ */
+ default void onPulsingChanged(boolean pulsing) {}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
index eb386dc..f0eeb04 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
@@ -20,6 +20,7 @@
import android.animation.ValueAnimator;
import android.text.format.DateFormat;
import android.util.FloatProperty;
+import android.view.View;
import android.view.animation.Interpolator;
import com.android.internal.annotations.GuardedBy;
@@ -77,6 +78,16 @@
private HistoricalState[] mHistoricalRecords = new HistoricalState[HISTORY_SIZE];
/**
+ * Current SystemUiVisibility
+ */
+ private int mSystemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE;
+
+ /**
+ * If the device is currently pulsing (AOD2).
+ */
+ private boolean mPulsing;
+
+ /**
* If the device is currently dozing or not.
*/
private boolean mIsDozing;
@@ -292,6 +303,30 @@
return mKeyguardRequested;
}
+ @Override
+ public void setSystemUiVisibility(int visibility) {
+ if (mSystemUiVisibility != visibility) {
+ mSystemUiVisibility = visibility;
+ synchronized (mListeners) {
+ for (RankedListener rl : new ArrayList<>(mListeners)) {
+ rl.mListener.onSystemUiVisibilityChanged(mSystemUiVisibility);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void setPulsing(boolean pulsing) {
+ if (mPulsing != pulsing) {
+ mPulsing = pulsing;
+ synchronized (mListeners) {
+ for (RankedListener rl : new ArrayList<>(mListeners)) {
+ rl.mListener.onPulsingChanged(pulsing);
+ }
+ }
+ }
+ }
+
/**
* Returns String readable state of status bar from {@link StatusBarState}
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SysuiStatusBarStateController.java b/packages/SystemUI/src/com/android/systemui/statusbar/SysuiStatusBarStateController.java
index dc5e1e9..2ad979ab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SysuiStatusBarStateController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SysuiStatusBarStateController.java
@@ -111,6 +111,16 @@
boolean isKeyguardRequested();
/**
+ * Set systemui visibility
+ */
+ void setSystemUiVisibility(int visibility);
+
+ /**
+ * Set pulsing
+ */
+ void setPulsing(boolean visibility);
+
+ /**
* Listener with rankings SbStateListenerRank that have dependencies so must be updated
* in a certain order
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 3cde493..382d694 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -227,7 +227,6 @@
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.ZenModeController;
-import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.InjectionInflationController;
import com.android.systemui.volume.VolumeComponent;
@@ -2134,6 +2133,7 @@
checkBarModes();
mAutoHideController.touchAutoHide();
}
+ mStatusBarStateController.setSystemUiVisibility(mSystemUiVisibility);
}
mLightBarController.onSystemUiVisibilityChanged(fullscreenStackVis, dockedStackVis,
mask, fullscreenStackBounds, dockedStackBounds, sbModeChanged, mStatusBarMode,
@@ -3971,6 +3971,7 @@
}
private void setPulsing(boolean pulsing) {
+ mStatusBarStateController.setPulsing(pulsing);
mStatusBarKeyguardViewManager.setPulsing(pulsing);
mKeyguardViewMediator.setPulsing(pulsing);
mNotificationPanel.setPulsing(pulsing);