Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: chrome/browser/ui/views/frame/global_menu_bar_x11.h

Issue 617963005: [Linux] Add a People menu item to the global menu bar. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: + dcheck Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_GLOBAL_MENU_BAR_X11_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_GLOBAL_MENU_BAR_X11_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_GLOBAL_MENU_BAR_X11_H_ 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_GLOBAL_MENU_BAR_X11_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/prefs/pref_change_registrar.h" 13 #include "base/prefs/pref_change_registrar.h"
14 #include "chrome/browser/command_observer.h" 14 #include "chrome/browser/command_observer.h"
15 #include "chrome/browser/profiles/avatar_menu.h"
16 #include "chrome/browser/profiles/avatar_menu_observer.h"
15 #include "chrome/browser/sessions/tab_restore_service.h" 17 #include "chrome/browser/sessions/tab_restore_service.h"
16 #include "chrome/browser/sessions/tab_restore_service_observer.h" 18 #include "chrome/browser/sessions/tab_restore_service_observer.h"
19 #include "chrome/browser/ui/browser_list_observer.h"
17 #include "components/history/core/browser/history_types.h" 20 #include "components/history/core/browser/history_types.h"
18 #include "content/public/browser/notification_observer.h" 21 #include "content/public/browser/notification_observer.h"
19 #include "content/public/browser/notification_registrar.h" 22 #include "content/public/browser/notification_registrar.h"
20 #include "ui/base/glib/glib_signal.h" 23 #include "ui/base/glib/glib_signal.h"
21 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_observer_x11.h" 24 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_observer_x11.h"
22 25
23 typedef struct _DbusmenuMenuitem DbusmenuMenuitem; 26 typedef struct _DbusmenuMenuitem DbusmenuMenuitem;
24 typedef struct _DbusmenuServer DbusmenuServer; 27 typedef struct _DbusmenuServer DbusmenuServer;
25 28
26 namespace history { 29 namespace history {
(...skipping 12 matching lines...) Expand all
39 struct GlobalMenuBarCommand; 42 struct GlobalMenuBarCommand;
40 43
41 // Controls the Mac style menu bar on Unity. 44 // Controls the Mac style menu bar on Unity.
42 // 45 //
43 // Unity has an Apple-like menu bar at the top of the screen that changes 46 // Unity has an Apple-like menu bar at the top of the screen that changes
44 // depending on the active window. In the GTK port, we had a hidden GtkMenuBar 47 // depending on the active window. In the GTK port, we had a hidden GtkMenuBar
45 // object in each GtkWindow which existed only to be scrapped by the 48 // object in each GtkWindow which existed only to be scrapped by the
46 // libdbusmenu-gtk code. Since we don't have GtkWindows anymore, we need to 49 // libdbusmenu-gtk code. Since we don't have GtkWindows anymore, we need to
47 // interface directly with the lower level libdbusmenu-glib, which we 50 // interface directly with the lower level libdbusmenu-glib, which we
48 // opportunistically dlopen() since not everyone is running Ubuntu. 51 // opportunistically dlopen() since not everyone is running Ubuntu.
49 class GlobalMenuBarX11 : public CommandObserver, 52 class GlobalMenuBarX11 : public AvatarMenuObserver,
53 public chrome::BrowserListObserver,
54 public CommandObserver,
50 public content::NotificationObserver, 55 public content::NotificationObserver,
51 public TabRestoreServiceObserver, 56 public TabRestoreServiceObserver,
52 public views::DesktopWindowTreeHostObserverX11 { 57 public views::DesktopWindowTreeHostObserverX11 {
53 public: 58 public:
54 GlobalMenuBarX11(BrowserView* browser_view, 59 GlobalMenuBarX11(BrowserView* browser_view,
55 BrowserDesktopWindowTreeHostX11* host); 60 BrowserDesktopWindowTreeHostX11* host);
56 virtual ~GlobalMenuBarX11(); 61 virtual ~GlobalMenuBarX11();
57 62
58 // Creates the object path for DbusemenuServer which is attached to |xid|. 63 // Creates the object path for DbusemenuServer which is attached to |xid|.
59 static std::string GetPathForWindow(unsigned long xid); 64 static std::string GetPathForWindow(unsigned long xid);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 101
97 // Sends a message off to History for data. 102 // Sends a message off to History for data.
98 void GetTopSitesData(); 103 void GetTopSitesData();
99 104
100 // Callback to receive data requested from GetTopSitesData(). 105 // Callback to receive data requested from GetTopSitesData().
101 void OnTopSitesReceived(const history::MostVisitedURLList& visited_list); 106 void OnTopSitesReceived(const history::MostVisitedURLList& visited_list);
102 107
103 // Updates the visibility of the bookmark bar on pref changes. 108 // Updates the visibility of the bookmark bar on pref changes.
104 void OnBookmarkBarVisibilityChanged(); 109 void OnBookmarkBarVisibilityChanged();
105 110
111 void RebuildProfilesMenu();
112
106 // Find the first index of the item in |menu| with the tag |tag_id|. 113 // Find the first index of the item in |menu| with the tag |tag_id|.
107 int GetIndexOfMenuItemWithTag(DbusmenuMenuitem* menu, int tag_id); 114 int GetIndexOfMenuItemWithTag(DbusmenuMenuitem* menu, int tag_id);
108 115
109 // This will remove all menu items in |menu| with |tag| as their tag. This 116 // This will remove all menu items in |menu| with |tag| as their tag. This
110 // clears state about HistoryItems* that we keep to prevent that data from 117 // clears state about HistoryItems* that we keep to prevent that data from
111 // going stale. That's why this method recurses into its child menus. 118 // going stale. That's why this method recurses into its child menus.
112 void ClearMenuSection(DbusmenuMenuitem* menu, int tag_id); 119 void ClearMenuSection(DbusmenuMenuitem* menu, int tag_id);
113 120
114 // Deleter function for HistoryItem implementation detail. 121 // Deleter function for HistoryItem implementation detail.
115 static void DeleteHistoryItem(void* void_item); 122 static void DeleteHistoryItem(void* void_item);
116 123
124 // Overridden from AvatarMenuObserver:
125 virtual void OnAvatarMenuChanged(AvatarMenu* avatar_menu) OVERRIDE;
126
127 // Overridden from chrome::BrowserListObserver:
128 virtual void OnBrowserSetLastActive(Browser* browser) OVERRIDE;
129
117 // Overridden from CommandObserver: 130 // Overridden from CommandObserver:
118 virtual void EnabledStateChangedForCommand(int id, bool enabled) OVERRIDE; 131 virtual void EnabledStateChangedForCommand(int id, bool enabled) OVERRIDE;
119 132
120 // Overridden from content::NotificationObserver: 133 // Overridden from content::NotificationObserver:
121 virtual void Observe(int type, 134 virtual void Observe(int type,
122 const content::NotificationSource& source, 135 const content::NotificationSource& source,
123 const content::NotificationDetails& details) OVERRIDE; 136 const content::NotificationDetails& details) OVERRIDE;
124 137
125 // Overridden from TabRestoreServiceObserver: 138 // Overridden from TabRestoreServiceObserver:
126 virtual void TabRestoreServiceChanged(TabRestoreService* service) OVERRIDE; 139 virtual void TabRestoreServiceChanged(TabRestoreService* service) OVERRIDE;
127 virtual void TabRestoreServiceDestroyed(TabRestoreService* service) OVERRIDE; 140 virtual void TabRestoreServiceDestroyed(TabRestoreService* service) OVERRIDE;
128 141
129 // Overridden from views::DesktopWindowTreeHostObserverX11: 142 // Overridden from views::DesktopWindowTreeHostObserverX11:
130 virtual void OnWindowMapped(unsigned long xid) OVERRIDE; 143 virtual void OnWindowMapped(unsigned long xid) OVERRIDE;
131 virtual void OnWindowUnmapped(unsigned long xid) OVERRIDE; 144 virtual void OnWindowUnmapped(unsigned long xid) OVERRIDE;
132 145
133 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnItemActivated, DbusmenuMenuitem*, 146 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnItemActivated, DbusmenuMenuitem*,
134 unsigned int); 147 unsigned int);
135 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnHistoryItemActivated, 148 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnHistoryItemActivated,
136 DbusmenuMenuitem*, unsigned int); 149 DbusmenuMenuitem*, unsigned int);
137 CHROMEG_CALLBACK_0(GlobalMenuBarX11, void, OnHistoryMenuAboutToShow, 150 CHROMEG_CALLBACK_0(GlobalMenuBarX11, void, OnHistoryMenuAboutToShow,
138 DbusmenuMenuitem*); 151 DbusmenuMenuitem*);
152 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnProfileItemActivated,
153 DbusmenuMenuitem*, unsigned int);
154 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnEditProfileItemActivated,
155 DbusmenuMenuitem*, unsigned int);
156 CHROMEG_CALLBACK_1(GlobalMenuBarX11, void, OnCreateProfileItemActivated,
157 DbusmenuMenuitem*, unsigned int);
139 158
140 Browser* browser_; 159 Browser* browser_;
141 Profile* profile_; 160 Profile* profile_;
142 BrowserView* browser_view_; 161 BrowserView* browser_view_;
143 BrowserDesktopWindowTreeHostX11* host_; 162 BrowserDesktopWindowTreeHostX11* host_;
144 163
145 // Maps command ids to DbusmenuMenuitems so we can modify their 164 // Maps command ids to DbusmenuMenuitems so we can modify their
146 // enabled/checked state in response to state change notifications. 165 // enabled/checked state in response to state change notifications.
147 CommandIDMenuItemMap id_to_menu_item_; 166 CommandIDMenuItemMap id_to_menu_item_;
148 167
149 DbusmenuServer* server_; 168 DbusmenuServer* server_;
150 DbusmenuMenuitem* root_item_; 169 DbusmenuMenuitem* root_item_;
151 DbusmenuMenuitem* history_menu_; 170 DbusmenuMenuitem* history_menu_;
171 DbusmenuMenuitem* profiles_menu_;
152 172
153 // Tracks value of the kShowBookmarkBar preference. 173 // Tracks value of the kShowBookmarkBar preference.
154 PrefChangeRegistrar pref_change_registrar_; 174 PrefChangeRegistrar pref_change_registrar_;
155 175
156 history::TopSites* top_sites_; 176 history::TopSites* top_sites_;
157 177
158 TabRestoreService* tab_restore_service_; // weak 178 TabRestoreService* tab_restore_service_; // weak
159 179
180 scoped_ptr<AvatarMenu> avatar_menu_;
181
160 content::NotificationRegistrar registrar_; 182 content::NotificationRegistrar registrar_;
161 183
162 // For callbacks may be run after destruction. 184 // For callbacks may be run after destruction.
163 base::WeakPtrFactory<GlobalMenuBarX11> weak_ptr_factory_; 185 base::WeakPtrFactory<GlobalMenuBarX11> weak_ptr_factory_;
164 186
165 DISALLOW_COPY_AND_ASSIGN(GlobalMenuBarX11); 187 DISALLOW_COPY_AND_ASSIGN(GlobalMenuBarX11);
166 }; 188 };
167 189
168 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_GLOBAL_MENU_BAR_X11_H_ 190 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_GLOBAL_MENU_BAR_X11_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/OWNERS ('k') | chrome/browser/ui/views/frame/global_menu_bar_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698