Merge "Improvement for the Bubble Bar Bubbles' Shadows" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
index 5d550ae..af371f2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
@@ -307,6 +307,17 @@
         }
     }
 
+    @Override
+    public void setAlpha(float alpha) {
+        super.setAlpha(alpha);
+        int childCount = getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View childView = getChildAt(i);
+            if (!(childView instanceof BubbleView)) continue;
+            ((BubbleView) childView).setProvideShadowOutline(alpha == 1f);
+        }
+    }
+
     /**
      * Sets new icon sizes and newBubbleBarPadding between icons and bubble bar borders.
      *
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
index 3bcaa16..6db42a4 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
@@ -70,6 +70,8 @@
     // The current scale value of the dot
     private float mDotScale;
 
+    private boolean mProvideShadowOutline = true;
+
     // TODO: (b/273310265) handle RTL
     // Whether the bubbles are positioned on the left or right side of the screen
     private boolean mOnLeft = false;
@@ -113,17 +115,28 @@
         });
     }
 
+    //TODO(b/345490679) remove once proper shadow is applied
+    /** Set whether provide an outline. */
+    public void setProvideShadowOutline(boolean provideOutline) {
+        if (mProvideShadowOutline == provideOutline) return;
+        mProvideShadowOutline = provideOutline;
+        invalidateOutline();
+    }
+
     private void getOutline(Outline outline) {
         updateBubbleSizeAndDotRender();
         final int normalizedSize = IconNormalizer.getNormalizedCircleSize(mBubbleSize);
         final int inset = (mBubbleSize - normalizedSize) / 2;
-        outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize);
+        if (mProvideShadowOutline) {
+            outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize);
+        }
     }
 
     private void updateBubbleSizeAndDotRender() {
         int updatedBubbleSize = Math.min(getWidth(), getHeight());
         if (updatedBubbleSize == mBubbleSize) return;
         mBubbleSize = updatedBubbleSize;
+        invalidateOutline();
         if (mBubble == null || mBubble instanceof BubbleBarOverflow) return;
         Path dotPath = ((BubbleBarBubble) mBubble).getDotPath();
         mDotRenderer = new DotRenderer(mBubbleSize, dotPath, DEFAULT_PATH_SIZE);