172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_VIEWS_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_VIEWS_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <map> 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <set> 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/bookmarks/base_bookmark_model_observer.h" 13201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "chrome/browser/bookmarks/bookmark_node_data.h" 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/views/bookmarks/bookmark_context_menu.h" 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/native_widget_types.h" 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/menu/menu_delegate.h" 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/menu/menu_item_view.h" 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass BookmarkBarView; 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass BookmarkNode; 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass Browser; 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass PageNavigator; 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass Profile; 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace gfx { 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Rect; 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} // namespace gfx 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace ui { 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass OSExchangeData; 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} // namespace ui 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views { 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass MenuButton; 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} // namespace views 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// BookmarkMenuController is responsible for showing a menu of bookmarks, 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// each item in the menu represents a bookmark. 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// BookmarkMenuController deletes itself as necessary, although the menu can 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// be explicitly hidden by way of the Cancel method. 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BookmarkMenuController : public BaseBookmarkModelObserver, 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public views::MenuDelegate, 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public BookmarkContextMenuObserver { 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The observer is notified prior to the menu being deleted. 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch class Observer { 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void BookmarkMenuDeleted(BookmarkMenuController* controller) = 0; 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~Observer() {} 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }; 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Creates a BookmarkMenuController showing the children of |node| starting 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // at index |start_child_index|. 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BookmarkMenuController(Browser* browser, 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch Profile* profile, 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PageNavigator* page_navigator, 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::NativeWindow parent, 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const BookmarkNode* node, 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int start_child_index); 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void RunMenuAt(BookmarkBarView* bookmark_bar, bool for_drop); 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Shows the menu. 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void RunMenuAt(views::MenuButton* button, 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView::AnchorPosition position, 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool for_drop); 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Hides the menu. 714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void Cancel(); 724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the node the menu is showing for. 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const BookmarkNode* node() const { return node_; } 754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the menu. 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* menu() const { return menu_; } 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the context menu, or NULL if the context menu isn't showing. 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* context_menu() const { 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch return context_menu_.get() ? context_menu_->menu() : NULL; 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void set_observer(Observer* observer) { observer_ = observer; } 854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // MenuDelegate methods. 8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual std::wstring GetTooltipText(int id, const gfx::Point& p); 884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTriggerableEvent(const views::MouseEvent& e); 894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ExecuteCommand(int id, int mouse_event_flags); 904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool GetDropFormats( 914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* menu, 924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int* formats, 9372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::set<ui::OSExchangeData::CustomFormat>* custom_formats); 944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool AreDropTypesRequired(views::MenuItemView* menu); 9572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual bool CanDrop(views::MenuItemView* menu, 9672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const ui::OSExchangeData& data); 974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int GetDropOperation(views::MenuItemView* item, 984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const views::DropTargetEvent& event, 994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DropPosition* position); 1004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int OnPerformDrop(views::MenuItemView* menu, 1014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DropPosition position, 1024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const views::DropTargetEvent& event); 1034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool ShowContextMenu(views::MenuItemView* source, 1044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int id, 1054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const gfx::Point& p, 1064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool is_mouse_gesture); 1074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void DropMenuClosed(views::MenuItemView* menu); 1084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool CanDrag(views::MenuItemView* menu); 10972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void WriteDragData(views::MenuItemView* sender, 11072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ui::OSExchangeData* data); 1114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int GetDragOperations(views::MenuItemView* sender); 1124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual views::MenuItemView* GetSiblingMenu( 1134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* menu, 1144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const gfx::Point& screen_point, 1154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView::AnchorPosition* anchor, 1164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool* has_mnemonics, 1174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuButton** button); 1184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int GetMaxWidthForMenu(); 1194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // BookmarkModelObserver methods. 1214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void BookmarkModelChanged(); 122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void BookmarkNodeFaviconLoaded(BookmarkModel* model, 1234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const BookmarkNode* node); 1244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // BookmarkContextMenu::Observer methods. 1264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void WillRemoveBookmarks( 1274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::vector<const BookmarkNode*>& bookmarks); 1284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void DidRemoveBookmarks(); 1294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 1314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch typedef std::map<const BookmarkNode*, int> NodeToMenuIDMap; 1324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // BookmarkMenuController deletes itself as necessary. 1344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~BookmarkMenuController(); 1354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Creates a menu and adds it to node_to_menu_id_map_. This uses 1374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // BuildMenu to recursively populate the menu. 1384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* CreateMenu(const BookmarkNode* parent, 1394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int start_child_index); 1404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Creates an entry in menu for each child node of |parent| starting at 1424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // |start_child_index|. 1434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void BuildMenu(const BookmarkNode* parent, 1444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int start_child_index, 1454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* menu, 1464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int* next_menu_id); 1474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the menu whose id is |id|. 1494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* GetMenuByID(int id); 1504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Does the work of processing WillRemoveBookmarks. On exit the set of removed 1524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // menus is added to |removed_menus|. It's up to the caller to delete the 1534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // the menus added to |removed_menus|. 1544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void WillRemoveBookmarksImpl( 1554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::vector<const BookmarkNode*>& bookmarks, 1564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::set<views::MenuItemView*>* removed_menus); 1574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch Browser* browser_; 1594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch Profile* profile_; 1614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PageNavigator* page_navigator_; 1634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Parent of menus. 1654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::NativeWindow parent_; 1664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The node we're showing the contents of. 1684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const BookmarkNode* node_; 1694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Maps from menu id to BookmarkNode. 1714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::map<int, const BookmarkNode*> menu_id_to_node_map_; 1724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Mapping from node to menu id. This only contains entries for nodes of type 1744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // URL. 1754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch NodeToMenuIDMap node_to_menu_id_map_; 1764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Current menu. 1784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* menu_; 1794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Data for the drop. 181201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch BookmarkNodeData drop_data_; 1824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Used when a context menu is shown. 1844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch scoped_ptr<BookmarkContextMenu> context_menu_; 1854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The observer, may be null. 1874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch Observer* observer_; 1884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Is the menu being shown for a drop? 1904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool for_drop_; 1914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The bookmark bar. This is only non-null if we're showing a menu item 1934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // for a folder on the bookmark bar and not for drop. 1944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BookmarkBarView* bookmark_bar_; 1954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch typedef std::map<const BookmarkNode*, views::MenuItemView*> NodeToMenuMap; 1974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch NodeToMenuMap node_to_menu_map_; 1984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // ID of the next menu item. 2004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch int next_menu_id_; 2014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(BookmarkMenuController); 2034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 2044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 205dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_MENU_CONTROLLER_VIEWS_H_ 206