Update the sizes for bubble expanded view

* 16dp on either side / from edge of screen for the bubble view
* 16dp between bubble row & expanded bubble rect (works out to 5dp
  in code: 16dp - 2dp (badge overhang) - 9dp (pointer height)
* max 8dp between the bubbles in the top row
* manage button has some adjustments - 8dp above & below and is total
  32dp from edge of screen; ensure manage button is centered between
  bottom inset & bottom of expanded view

* fixes a bug where there was extra padding being at top of expanded
  view in landscape mode
* removed an unused layout file & unused dimens

Test: visual - expand a bubble, look at spacing of everything on
               screen; do the same in landscape from left and right
               edges of the screen.
Bug: 187715439
Bug: 183658029
Change-Id: I29e699aaf9b6e7bf75447dac6aa6b00a7b272b8b
diff --git a/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml b/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml
index ab02a2e6..c09ae53 100644
--- a/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml
+++ b/libs/WindowManager/Shell/res/layout/bubble_manage_button.xml
@@ -22,7 +22,8 @@
     android:layout_width="wrap_content"
     android:layout_height="40dp"
     android:layout_marginTop="8dp"
-    android:layout_marginLeft="8dp"
+    android:layout_marginLeft="16dp"
+    android:layout_marginBottom="8dp"
     android:focusable="true"
     android:text="@string/manage_bubbles_text"
     android:textSize="@*android:dimen/text_size_body_2_material"
diff --git a/libs/WindowManager/Shell/res/layout/bubble_menu_view.xml b/libs/WindowManager/Shell/res/layout/bubble_menu_view.xml
deleted file mode 100644
index d19b653..0000000
--- a/libs/WindowManager/Shell/res/layout/bubble_menu_view.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2019 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<com.android.wm.shell.bubbles.BubbleMenuView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    android:background="#66000000"
-    android:visibility="gone"
-    android:id="@+id/bubble_menu_container"
-    tools:ignore="MissingClass">
-
-    <FrameLayout
-        android:layout_height="@dimen/bubble_menu_item_height"
-        android:layout_width="wrap_content"
-        android:background="#FFFFFF"
-        android:id="@+id/bubble_menu_view">
-
-        <ImageView
-            android:id="@*android:id/icon"
-            android:layout_width="@dimen/bubble_grid_item_icon_width"
-            android:layout_height="@dimen/bubble_grid_item_icon_height"
-            android:layout_marginTop="@dimen/bubble_grid_item_icon_top_margin"
-            android:layout_marginBottom="@dimen/bubble_grid_item_icon_bottom_margin"
-            android:layout_marginLeft="@dimen/bubble_grid_item_icon_side_margin"
-            android:layout_marginRight="@dimen/bubble_grid_item_icon_side_margin"
-            android:scaleType="centerInside"
-            android:tint="@color/bubbles_icon_tint"
-        />
-    </FrameLayout>
-</com.android.wm.shell.bubbles.BubbleMenuView>
diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml
index a582028..e32d325 100644
--- a/libs/WindowManager/Shell/res/values/dimen.xml
+++ b/libs/WindowManager/Shell/res/values/dimen.xml
@@ -85,13 +85,6 @@
     <!-- The amount to inset the drop target regions from the edge of the display -->
     <dimen name="drop_layout_display_margin">16dp</dimen>
 
-    <!-- The menu grid size for bubble menu. -->
-    <dimen name="bubble_grid_item_icon_width">20dp</dimen>
-    <dimen name="bubble_grid_item_icon_height">20dp</dimen>
-    <dimen name="bubble_grid_item_icon_top_margin">12dp</dimen>
-    <dimen name="bubble_grid_item_icon_bottom_margin">4dp</dimen>
-    <dimen name="bubble_grid_item_icon_side_margin">22dp</dimen>
-
     <!-- How much each bubble is elevated. -->
     <dimen name="bubble_elevation">1dp</dimen>
     <!-- How much the bubble flyout text container is elevated. -->
@@ -109,7 +102,7 @@
     <!-- Padding between status bar and bubbles when displayed in expanded state -->
     <dimen name="bubble_padding_top">16dp</dimen>
     <!-- Max amount of space between bubbles when expanded. -->
-    <dimen name="bubble_max_spacing">16dp</dimen>
+    <dimen name="bubble_max_spacing">8dp</dimen>
     <!-- Size of individual bubbles. -->
     <dimen name="individual_bubble_size">60dp</dimen>
     <!-- Size of bubble bitmap. -->
@@ -119,7 +112,7 @@
     <!-- Size of the circle around the bubbles when they're in the dismiss target. -->
     <dimen name="bubble_dismiss_encircle_size">52dp</dimen>
     <!-- Padding around the view displayed when the bubble is expanded -->
-    <dimen name="bubble_expanded_view_padding">4dp</dimen>
+    <dimen name="bubble_expanded_view_padding">16dp</dimen>
     <!-- This should be at least the size of bubble_expanded_view_padding; it is used to include
          a slight touch slop around the expanded view. -->
     <dimen name="bubble_expanded_view_slop">8dp</dimen>
@@ -151,7 +144,7 @@
     <!-- Extra padding around the dismiss target for bubbles -->
     <dimen name="bubble_dismiss_slop">16dp</dimen>
     <!-- Height of button allowing users to adjust settings for bubbles. -->
-    <dimen name="bubble_manage_button_height">48dp</dimen>
+    <dimen name="bubble_manage_button_height">56dp</dimen>
     <!-- Height of an item in the bubble manage menu. -->
     <dimen name="bubble_menu_item_height">60dp</dimen>
     <!-- Max width of the message bubble-->
@@ -170,7 +163,7 @@
     <!-- How far down the screen the stack starts. -->
     <dimen name="bubble_stack_starting_offset_y">120dp</dimen>
     <!-- Space between the pointer triangle and the bubble expanded view -->
-    <dimen name="bubble_pointer_margin">8dp</dimen>
+    <dimen name="bubble_pointer_margin">5dp</dimen>
     <!-- Padding applied to the bubble dismiss target. Touches in this padding cause the bubbles to
          snap to the dismiss target. -->
     <dimen name="bubble_dismiss_target_padding_x">40dp</dimen>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index f5c453d..158babe 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -113,7 +113,6 @@
     private ShapeDrawable mTopPointer;
     private ShapeDrawable mLeftPointer;
     private ShapeDrawable mRightPointer;
-    private int mExpandedViewPadding;
     private float mCornerRadius = 0f;
     private int mBackgroundColorFloating;
 
@@ -349,7 +348,6 @@
         Resources res = getResources();
         mMinHeight = res.getDimensionPixelSize(R.dimen.bubble_expanded_default_height);
         mOverflowHeight = res.getDimensionPixelSize(R.dimen.bubble_overflow_height);
-        mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding);
 
         updateFontSize();
 
@@ -667,13 +665,15 @@
                 ? mExpandedViewContainerLocation[1] - mPositioner.getInsets().top
                 : 0;
         int settingsHeight = mIsOverflow ? 0 : mManageButtonHeight;
+        int pointerHeight = mPositioner.showBubblesVertically()
+                ? mPointerWidth
+                : (int) (mPointerHeight - mPointerOverlap + mPointerMargin);
         return mPositioner.getAvailableRect().height()
                 - expandedContainerY
                 - getPaddingTop()
                 - getPaddingBottom()
                 - settingsHeight
-                - mPointerHeight
-                - mPointerMargin;
+                - pointerHeight;
     }
 
     /**
@@ -721,15 +721,14 @@
                 : 0;
         final float paddingRight = (showVertically && !onLeft)
                 ? mPointerHeight - mPointerOverlap : 0;
-        final int paddingTop = showVertically ? 0
-                : mExpandedViewPadding;
-        setPadding((int) paddingLeft, paddingTop, (int) paddingRight, 0);
+        final float paddingTop = showVertically ? 0
+                : mPointerHeight - mPointerOverlap;
+        setPadding((int) paddingLeft, (int) paddingTop, (int) paddingRight, 0);
 
         final float expandedViewY = mPositioner.getExpandedViewY();
-        final float bubbleSize = mPositioner.getBubbleBitmapSize();
         final float bubbleCenter = showVertically
-                ? bubblePosition + (bubbleSize / 2f) - expandedViewY
-                : bubblePosition + (bubbleSize / 2f);
+                ? bubblePosition + (mPositioner.getBubbleSize() / 2f) - expandedViewY
+                : bubblePosition + (mPositioner.getBubbleBitmapSize() / 2f) - mPointerWidth;
         // Post because we need the width of the view
         post(() -> {
             float pointerY;
@@ -741,7 +740,7 @@
                         : getWidth() - mPaddingRight - mPointerOverlap;
             } else {
                 pointerY = mPointerOverlap;
-                pointerX = bubbleCenter - mPaddingLeft - (mPointerWidth / 2f);
+                pointerX = bubbleCenter - (mPointerWidth / 2f);
             }
             mPointerView.setTranslationY(pointerY);
             mPointerView.setTranslationX(pointerX);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
index ae1a053..65a0dda 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
@@ -72,12 +72,13 @@
     private int mBubbleBitmapSize;
     private int mExpandedViewLargeScreenWidth;
     private int mExpandedViewPadding;
-    private int mPointerHeight;
-    private int mBubblePaddingTop;
+    private int mPointerMargin;
+    private float mPointerWidth;
+    private float mPointerHeight;
 
     private PointF mPinLocation;
     private PointF mRestingStackPosition;
-    private int[] mLeftRightPadding = new int[2];
+    private int[] mPaddings = new int[4];
 
     private boolean mIsLargeScreen;
     private boolean mShowingInTaskbar;
@@ -154,8 +155,9 @@
         mExpandedViewLargeScreenWidth = res.getDimensionPixelSize(
                 R.dimen.bubble_expanded_view_tablet_width);
         mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding);
+        mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width);
         mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);
-        mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
+        mPointerMargin = res.getDimensionPixelSize(R.dimen.bubble_pointer_margin);
         if (mShowingInTaskbar) {
             adjustForTaskbar();
         }
@@ -251,30 +253,32 @@
         final boolean isLargeOrOverflow = mIsLargeScreen || isOverflow;
         if (showBubblesVertically()) {
             if (!onLeft) {
-                rightPadding += mPointerHeight + mBubbleSize;
+                rightPadding += mBubbleSize - mPointerHeight;
                 leftPadding += isLargeOrOverflow
                         ? (mPositionRect.width() - rightPadding - mExpandedViewLargeScreenWidth)
                         : 0;
             } else {
-                //TODO: pointer height should be padding between pointer & bubbles here & above
-                leftPadding += mPointerHeight + mBubbleSize;
+                leftPadding += mBubbleSize - mPointerHeight;
                 rightPadding += isLargeOrOverflow
                         ? (mPositionRect.width() - leftPadding - mExpandedViewLargeScreenWidth)
                         : 0;
             }
         }
-        mLeftRightPadding[0] = leftPadding;
-        mLeftRightPadding[1] = rightPadding;
-        return mLeftRightPadding;
+        // [left, top, right, bottom]
+        mPaddings[0] = leftPadding;
+        mPaddings[1] = showBubblesVertically() ? 0 : mPointerMargin;
+        mPaddings[2] = rightPadding;
+        mPaddings[3] = 0;
+        return mPaddings;
     }
 
     /** Calculates the y position of the expanded view when it is expanded. */
     public float getExpandedViewY() {
         final int top = getAvailableRect().top;
         if (showBubblesVertically()) {
-            return top + mExpandedViewPadding;
+            return top - mPointerWidth;
         } else {
-            return top + mBubbleSize + mBubblePaddingTop;
+            return top + mBubbleSize + mPointerMargin;
         }
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
index 64a3b8f..c6a9c10 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
@@ -247,7 +247,6 @@
     private int mBubbleElevation;
     private int mBubbleTouchPadding;
     private int mExpandedViewPadding;
-    private int mPointerHeight;
     private int mCornerRadius;
     private int mImeOffset;
     @Nullable private BubbleViewProvider mExpandedBubble;
@@ -767,7 +766,6 @@
         mBubbleSize = res.getDimensionPixelSize(R.dimen.individual_bubble_size);
         mBubbleElevation = res.getDimensionPixelSize(R.dimen.bubble_elevation);
         mBubbleTouchPadding = res.getDimensionPixelSize(R.dimen.bubble_touch_padding);
-        mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);
         mImeOffset = res.getDimensionPixelSize(R.dimen.pip_ime_offset);
 
         mExpandedViewPadding = res.getDimensionPixelSize(R.dimen.bubble_expanded_view_padding);
@@ -2700,7 +2698,7 @@
                 && BubbleOverflow.KEY.equals(mExpandedBubble.getKey());
         int[] paddings = mPositioner.getExpandedViewPadding(
                 mStackAnimationController.isStackOnLeftSide(), isOverflowExpanded);
-        mExpandedViewContainer.setPadding(paddings[0], 0, paddings[1], 0);
+        mExpandedViewContainer.setPadding(paddings[0], paddings[1], paddings[2], paddings[3]);
         if (mIsExpansionAnimating) {
             mExpandedViewContainer.setVisibility(mIsExpanded ? VISIBLE : GONE);
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
index fc49957..7f55403 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
@@ -208,7 +208,6 @@
         Resources res = mLayout.getContext().getResources();
         mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
         mStackOffsetPx = res.getDimensionPixelSize(R.dimen.bubble_stack_offset);
-        mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
         mBubbleSizePx = mPositioner.getBubbleSize();
         mBubblesMaxRendered = res.getInteger(R.integer.bubbles_max_rendered);
         mBubblesMaxSpace = res.getDimensionPixelSize(R.dimen.bubble_max_spacing);
@@ -276,8 +275,8 @@
                     boolean onLeft = mCollapsePoint != null
                             && mCollapsePoint.x < (availableRect.width() / 2f);
                     float translationX = onLeft
-                            ? availableRect.left + mExpandedViewPadding
-                            : availableRect.right - mBubbleSizePx - mExpandedViewPadding;
+                            ? availableRect.left
+                            : availableRect.right - mBubbleSizePx;
                     path.lineTo(translationX, getBubbleXOrYForOrientation(index));
                 } else {
                     path.lineTo(getBubbleXOrYForOrientation(index), expandedY);
@@ -621,8 +620,8 @@
                         && mCollapsePoint.x < (availableRect.width() / 2f);
                 animationForChild(bubble)
                         .translationX(onLeft
-                                ? availableRect.left + mExpandedViewPadding
-                                : availableRect.right - mBubbleSizePx - mExpandedViewPadding)
+                                ? availableRect.left
+                                : availableRect.right - mBubbleSizePx)
                         .translationY(getBubbleXOrYForOrientation(i))
                         .start();
             } else {