| Index: views/controls/menu/menu_item_view.h
 | 
| diff --git a/views/controls/menu/menu_item_view.h b/views/controls/menu/menu_item_view.h
 | 
| index db06bf1ce7a157c9223b62819c560b005c975771..c04c34181bef0d506453dab1e0a200bc16237d61 100644
 | 
| --- a/views/controls/menu/menu_item_view.h
 | 
| +++ b/views/controls/menu/menu_item_view.h
 | 
| @@ -26,8 +26,13 @@ class SubmenuView;
 | 
|  // of the various AddXXX methods.
 | 
|  //
 | 
|  // MenuItemView is itself a View, which means you can add Views to each
 | 
| -// MenuItemView. This normally NOT want you want, rather add other child Views
 | 
| -// to the submenu of the MenuItemView.
 | 
| +// MenuItemView. This is normally NOT want you want, rather add other child
 | 
| +// Views to the submenu of the MenuItemView. Any child views of the MenuItemView
 | 
| +// that are focusable can be navigated to by way of the up/down arrow and can be
 | 
| +// activated by way of space/return keys. Activating a focusable child results
 | 
| +// in |AcceleratorPressed| being invoked. Note, that as menus try not to steal
 | 
| +// focus from the hosting window child views do not actually get focus. Instead
 | 
| +// |SetHotTracked| is used as the user navigates around.
 | 
|  //
 | 
|  // There are two ways to show a MenuItemView:
 | 
|  // 1. Use RunMenuAt. This blocks the caller, executing the selected command
 | 
| @@ -109,14 +114,14 @@ class MenuItemView : public View {
 | 
|    void AppendMenuItem(int item_id,
 | 
|                        const std::wstring& label,
 | 
|                        Type type) {
 | 
| -    AppendMenuItemInternal(item_id, label, SkBitmap(), type);
 | 
| +    AppendMenuItemImpl(item_id, label, SkBitmap(), type);
 | 
|    }
 | 
|  
 | 
|    // Append a submenu to this menu.
 | 
|    // The returned pointer is owned by this menu.
 | 
|    MenuItemView* AppendSubMenu(int item_id,
 | 
|                                const std::wstring& label) {
 | 
| -    return AppendMenuItemInternal(item_id, label, SkBitmap(), SUBMENU);
 | 
| +    return AppendMenuItemImpl(item_id, label, SkBitmap(), SUBMENU);
 | 
|    }
 | 
|  
 | 
|    // Append a submenu with an icon to this menu.
 | 
| @@ -124,7 +129,7 @@ class MenuItemView : public View {
 | 
|    MenuItemView* AppendSubMenuWithIcon(int item_id,
 | 
|                                        const std::wstring& label,
 | 
|                                        const SkBitmap& icon) {
 | 
| -    return AppendMenuItemInternal(item_id, label, icon, SUBMENU);
 | 
| +    return AppendMenuItemImpl(item_id, label, icon, SUBMENU);
 | 
|    }
 | 
|  
 | 
|    // This is a convenience for standard text label menu items where the label
 | 
| @@ -142,7 +147,7 @@ class MenuItemView : public View {
 | 
|  
 | 
|    // Adds a separator to this menu
 | 
|    void AppendSeparator() {
 | 
| -    AppendMenuItemInternal(0, std::wstring(), SkBitmap(), SEPARATOR);
 | 
| +    AppendMenuItemImpl(0, std::wstring(), SkBitmap(), SEPARATOR);
 | 
|    }
 | 
|  
 | 
|    // Appends a menu item with an icon. This is for the menu item which
 | 
| @@ -151,9 +156,15 @@ class MenuItemView : public View {
 | 
|    void AppendMenuItemWithIcon(int item_id,
 | 
|                                const std::wstring& label,
 | 
|                                const SkBitmap& icon) {
 | 
| -    AppendMenuItemInternal(item_id, label, icon, NORMAL);
 | 
| +    AppendMenuItemImpl(item_id, label, icon, NORMAL);
 | 
|    }
 | 
|  
 | 
| +  // All the AppendXXX methods funnel into this.
 | 
| +  MenuItemView* AppendMenuItemImpl(int item_id,
 | 
| +                                   const std::wstring& label,
 | 
| +                                   const SkBitmap& icon,
 | 
| +                                   Type type);
 | 
| +
 | 
|    // Returns the view that contains child menu items. If the submenu has
 | 
|    // not been creates, this creates it.
 | 
|    virtual SubmenuView* CreateSubmenu();
 | 
| @@ -232,6 +243,9 @@ class MenuItemView : public View {
 | 
|    // recalculates the bounds.
 | 
|    void ChildrenChanged();
 | 
|  
 | 
| +  // Sizes any child views.
 | 
| +  virtual void Layout();
 | 
| +
 | 
|   protected:
 | 
|    // Creates a MenuItemView. This is used by the various AddXXX methods.
 | 
|    MenuItemView(MenuItemView* parent, int command, Type type);
 | 
| @@ -248,12 +262,6 @@ class MenuItemView : public View {
 | 
|              MenuItemView::Type type,
 | 
|              MenuDelegate* delegate);
 | 
|  
 | 
| -  // All the AddXXX methods funnel into this.
 | 
| -  MenuItemView* AppendMenuItemInternal(int item_id,
 | 
| -                                       const std::wstring& label,
 | 
| -                                       const SkBitmap& icon,
 | 
| -                                       Type type);
 | 
| -
 | 
|    // Invoked by the MenuController when the menu closes as the result of
 | 
|    // drag and drop run.
 | 
|    void DropMenuClosed(bool notify_delegate);
 | 
| @@ -289,6 +297,9 @@ class MenuItemView : public View {
 | 
|    int GetTopMargin();
 | 
|    int GetBottomMargin();
 | 
|  
 | 
| +  // Returns the preferred width (and padding) of any children.
 | 
| +  int GetChildPreferredWidth();
 | 
| +
 | 
|    // The delegate. This is only valid for the root menu item. You shouldn't
 | 
|    // use this directly, instead use GetDelegate() which walks the tree as
 | 
|    // as necessary.
 | 
| 
 |