am f721b398: Merge "Prevent cases of bogus action bar measurement." into honeycomb-mr2

* commit 'f721b398ad69503e1212e5fe8a44d176d25f135a':
  Prevent cases of bogus action bar measurement.
diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java
index 71af115..f762265 100644
--- a/core/java/com/android/internal/widget/ActionBarContextView.java
+++ b/core/java/com/android/internal/widget/ActionBarContextView.java
@@ -410,7 +410,7 @@
         availableWidth -= child.getMeasuredWidth();
         availableWidth -= spacing;
 
-        return availableWidth;
+        return Math.max(0, availableWidth);
     }
     
     private int positionChild(View child, int x, int y, int contentHeight) {
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 81d02ee..cc51911 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -635,48 +635,48 @@
             mHomeLayout.measure(MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST),
                     MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
             final int homeWidth = mHomeLayout.getMeasuredWidth();
-            availableWidth -= homeWidth;
-            leftOfCenter -= homeWidth;
+            availableWidth = Math.max(0, availableWidth - homeWidth);
+            leftOfCenter = Math.max(0, availableWidth - homeWidth);
         }
         
         if (mMenuView != null) {
             availableWidth = measureChildView(mMenuView, availableWidth,
                     childSpecHeight, 0);
-            rightOfCenter -= mMenuView.getMeasuredWidth();
+            rightOfCenter = Math.max(0, rightOfCenter - mMenuView.getMeasuredWidth());
         }
 
         boolean showTitle = mTitleLayout != null && mTitleLayout.getVisibility() != GONE &&
                 (mDisplayOptions & ActionBar.DISPLAY_SHOW_TITLE) != 0;
         if (showTitle) {
             availableWidth = measureChildView(mTitleLayout, availableWidth, childSpecHeight, 0);
-            leftOfCenter -= mTitleLayout.getMeasuredWidth();
+            leftOfCenter = Math.max(0, leftOfCenter - mTitleLayout.getMeasuredWidth());
         }
 
         switch (mNavigationMode) {
         case ActionBar.NAVIGATION_MODE_LIST:
             if (mListNavLayout != null) {
                 final int itemPaddingSize = showTitle ? mItemPadding * 2 : mItemPadding;
-                availableWidth -= itemPaddingSize;
-                leftOfCenter -= itemPaddingSize;
+                availableWidth = Math.max(0, availableWidth - itemPaddingSize);
+                leftOfCenter = Math.max(0, leftOfCenter - itemPaddingSize);
                 mListNavLayout.measure(
                         MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST),
                         MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
                 final int listNavWidth = mListNavLayout.getMeasuredWidth();
-                availableWidth -= listNavWidth;
-                leftOfCenter -= listNavWidth;
+                availableWidth = Math.max(0, availableWidth - listNavWidth);
+                leftOfCenter = Math.max(0, leftOfCenter - listNavWidth);
             }
             break;
         case ActionBar.NAVIGATION_MODE_TABS:
             if (mTabScrollView != null) {
                 final int itemPaddingSize = showTitle ? mItemPadding * 2 : mItemPadding;
-                availableWidth -= itemPaddingSize;
-                leftOfCenter -= itemPaddingSize;
+                availableWidth = Math.max(0, availableWidth - itemPaddingSize);
+                leftOfCenter = Math.max(0, leftOfCenter - itemPaddingSize);
                 mTabScrollView.measure(
                         MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST),
                         MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
                 final int tabWidth = mTabScrollView.getMeasuredWidth();
-                availableWidth -= tabWidth;
-                leftOfCenter -= tabWidth;
+                availableWidth = Math.max(0, availableWidth - tabWidth);
+                leftOfCenter = Math.max(0, leftOfCenter - tabWidth);
             }
             break;
         }
@@ -685,7 +685,8 @@
                 mIndeterminateProgressView.getVisibility() != GONE) {
             availableWidth = measureChildView(mIndeterminateProgressView, availableWidth,
                     childSpecHeight, 0);
-            rightOfCenter -= mIndeterminateProgressView.getMeasuredWidth();
+            rightOfCenter = Math.max(0,
+                    rightOfCenter - mIndeterminateProgressView.getMeasuredWidth());
         }
 
         if ((mDisplayOptions & ActionBar.DISPLAY_SHOW_CUSTOM) != 0 && mCustomNavView != null) {
@@ -764,7 +765,7 @@
         availableWidth -= child.getMeasuredWidth();
         availableWidth -= spacing;
 
-        return availableWidth;
+        return Math.max(0, availableWidth);
     }
 
     @Override