Merge "Make the BubbleBar flag dynamic in wmshell." into main
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
index f259902..dddcbd4 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
@@ -512,6 +512,7 @@
      * <p>If bubble bar is supported, bubble views will be updated to switch to bar mode.
      */
     public void registerBubbleStateListener(Bubbles.BubbleStateListener listener) {
+        mBubbleProperties.refresh();
         if (canShowAsBubbleBar() && listener != null) {
             // Only set the listener if we can show the bubble bar.
             mBubbleStateListener = listener;
@@ -529,6 +530,7 @@
      * will be updated accordingly.
      */
     public void unregisterBubbleStateListener() {
+        mBubbleProperties.refresh();
         if (mBubbleStateListener != null) {
             mBubbleStateListener = null;
             setUpBubbleViewsForMode();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt
index 85aaa8e..4206d93 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/BubbleProperties.kt
@@ -29,4 +29,7 @@
      * When this is `false`, bubbles will be floating.
      */
     val isBubbleBarEnabled: Boolean
+
+    /** Refreshes the current value of [isBubbleBarEnabled]. */
+    fun refresh()
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt
index 9d8b9a6..67dc642 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/properties/ProdBubbleProperties.kt
@@ -22,6 +22,12 @@
 object ProdBubbleProperties : BubbleProperties {
 
     // TODO(b/256873975) Should use proper flag when available to shell/launcher
-    override val isBubbleBarEnabled =
-        SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false)
+    private var _isBubbleBarEnabled =
+            SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false)
+
+    override val isBubbleBarEnabled = _isBubbleBarEnabled
+
+    override fun refresh() {
+        _isBubbleBarEnabled = SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false)
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index 424218c..409ba48 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -2262,5 +2262,8 @@
         public boolean isBubbleBarEnabled() {
             return mIsBubbleBarEnabled;
         }
+
+        @Override
+        public void refresh() {}
     }
 }