Home | History | Annotate | Download | only in tab_contents
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_TAB_CONTENTS_POPUP_MENU_HELPER_MAC_H_
      6 #define CHROME_BROWSER_TAB_CONTENTS_POPUP_MENU_HELPER_MAC_H_
      7 
      8 #include <vector>
      9 
     10 #include "content/common/notification_observer.h"
     11 #include "content/common/notification_registrar.h"
     12 #include "ui/gfx/rect.h"
     13 
     14 class RenderViewHost;
     15 struct WebMenuItem;
     16 
     17 class PopupMenuHelper : public NotificationObserver {
     18  public:
     19   // Creates a PopupMenuHelper that will notify |render_view_host| when a user
     20   // selects or cancels the popup.
     21   explicit PopupMenuHelper(RenderViewHost* render_view_host);
     22 
     23   // Shows the popup menu and notifies the RenderViewHost of the selection/
     24   // cancel.
     25   // This call is blocking.
     26   void ShowPopupMenu(const gfx::Rect& bounds,
     27                      int item_height,
     28                      double item_font_size,
     29                      int selected_item,
     30                      const std::vector<WebMenuItem>& items,
     31                      bool right_aligned);
     32 
     33  private:
     34   // NotificationObserver implementation:
     35   virtual void Observe(NotificationType type,
     36                        const NotificationSource& source,
     37                        const NotificationDetails& details);
     38 
     39   NotificationRegistrar notification_registrar_;
     40 
     41   RenderViewHost* render_view_host_;
     42 
     43   DISALLOW_COPY_AND_ASSIGN(PopupMenuHelper);
     44 };
     45 
     46 #endif  // CHROME_BROWSER_TAB_CONTENTS_POPUP_MENU_HELPER_MAC_H_
     47