Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
index cd053376aa7b04180022795783a9e6661c2ec460..0728f2deb626ebbdae3829161c3fcb2f0fc4510c 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
@@ -133,13 +133,23 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
* @param screenRotation Current device screen rotation. |
* @param visibleDisplayFrame The display area rect in which AppMenu is supposed to fit in. |
* @param screenHeight Current device screen height. |
+ * @param footerResourceId The resource id for a view to add to the end of the menu list. |
+ * Can be 0 if no such view is required. |
*/ |
void show(Context context, View anchorView, boolean isByHardwareButton, int screenRotation, |
- Rect visibleDisplayFrame, int screenHeight) { |
+ Rect visibleDisplayFrame, int screenHeight, int footerResourceId) { |
mPopup = new ListPopupWindow(context, null, android.R.attr.popupMenuStyle); |
mPopup.setModal(true); |
mPopup.setAnchorView(anchorView); |
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED); |
+ |
+ int footerHeight = 0; |
+ if (footerResourceId != 0) { |
+ mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW); |
+ mPopup.setPromptView(LayoutInflater.from(context).inflate(footerResourceId, null)); |
+ footerHeight = context.getResources().getDimensionPixelSize( |
+ R.dimen.menu_footer_height); |
+ } |
mPopup.setOnDismissListener(new OnDismissListener() { |
@Override |
public void onDismiss() { |
@@ -207,7 +217,8 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
mAdapter = new AppMenuAdapter(this, menuItems, LayoutInflater.from(context)); |
mPopup.setAdapter(mAdapter); |
- setMenuHeight(menuItems.size(), visibleDisplayFrame, screenHeight, sizingPadding); |
+ setMenuHeight( |
+ menuItems.size(), visibleDisplayFrame, screenHeight, sizingPadding, footerHeight); |
setPopupOffset(mPopup, mCurrentScreenRotation, visibleDisplayFrame, sizingPadding); |
mPopup.setOnItemClickListener(this); |
mPopup.show(); |
@@ -339,8 +350,8 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
return mMenu; |
} |
- private void setMenuHeight( |
- int numMenuItems, Rect appDimensions, int screenHeight, Rect padding) { |
+ private void setMenuHeight(int numMenuItems, Rect appDimensions, |
+ int screenHeight, Rect padding, int footerHeight) { |
assert mPopup.getAnchorView() != null; |
View anchorView = mPopup.getAnchorView(); |
int[] anchorViewLocation = new int[2]; |
@@ -355,7 +366,7 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
int availableScreenSpace = Math.max(anchorViewLocation[1], |
appDimensions.height() - anchorViewLocation[1] - anchorViewImpactHeight); |
- availableScreenSpace -= padding.bottom; |
+ availableScreenSpace -= padding.bottom + footerHeight; |
if (mIsByHardwareButton) availableScreenSpace -= padding.top; |
int numCanFit = availableScreenSpace / (mItemRowHeight + mItemDividerHeight); |