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

Side by Side Diff: chrome/browser/ui/cocoa/history_menu_bridge.h

Issue 1350653004: [sessions] Properly namespace recently-componentized TabRestore code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Mac Created 5 years, 3 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 (c) 2011 The Chromium Authors. All rights reserved. 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 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_COCOA_HISTORY_MENU_BRIDGE_H_ 5 #ifndef CHROME_BROWSER_UI_COCOA_HISTORY_MENU_BRIDGE_H_
6 #define CHROME_BROWSER_UI_COCOA_HISTORY_MENU_BRIDGE_H_ 6 #define CHROME_BROWSER_UI_COCOA_HISTORY_MENU_BRIDGE_H_
7 7
8 #import <Cocoa/Cocoa.h> 8 #import <Cocoa/Cocoa.h>
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/mac/scoped_nsobject.h" 12 #include "base/mac/scoped_nsobject.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/scoped_observer.h" 14 #include "base/scoped_observer.h"
15 #include "base/task/cancelable_task_tracker.h" 15 #include "base/task/cancelable_task_tracker.h"
16 #import "chrome/browser/ui/cocoa/main_menu_item.h" 16 #import "chrome/browser/ui/cocoa/main_menu_item.h"
17 #import "components/favicon/core/favicon_service.h" 17 #import "components/favicon/core/favicon_service.h"
18 #include "components/history/core/browser/history_service.h" 18 #include "components/history/core/browser/history_service.h"
19 #include "components/history/core/browser/history_service_observer.h" 19 #include "components/history/core/browser/history_service_observer.h"
20 #include "components/sessions/core/tab_restore_service.h" 20 #include "components/sessions/core/tab_restore_service.h"
21 #include "components/sessions/core/tab_restore_service_observer.h" 21 #include "components/sessions/core/tab_restore_service_observer.h"
22 #include "components/sessions/session_id.h" 22 #include "components/sessions/session_id.h"
23 23
24 class Profile; 24 class Profile;
25 class TabRestoreService;
26 @class HistoryMenuCocoaController; 25 @class HistoryMenuCocoaController;
27 26
28 namespace { 27 namespace {
29 class HistoryMenuBridgeTest; 28 class HistoryMenuBridgeTest;
30 } 29 }
31 30
32 namespace favicon_base { 31 namespace favicon_base {
33 struct FaviconImageResult; 32 struct FaviconImageResult;
34 } 33 }
35 34
(...skipping 12 matching lines...) Expand all
48 // have a tag that's equal to the parent + 1. Tags within the history menu have 47 // have a tag that's equal to the parent + 1. Tags within the history menu have
49 // a range of [400,500) and do not go through CommandDispatch for their target- 48 // a range of [400,500) and do not go through CommandDispatch for their target-
50 // action mechanism. 49 // action mechanism.
51 // 50 //
52 // These menu items do not use firstResponder as their target. Rather, they are 51 // These menu items do not use firstResponder as their target. Rather, they are
53 // hooked directly up to the HistoryMenuCocoaController that then bridges back 52 // hooked directly up to the HistoryMenuCocoaController that then bridges back
54 // to this class. These items are created via the AddItemToMenu() helper. Also, 53 // to this class. These items are created via the AddItemToMenu() helper. Also,
55 // unlike the typical ownership model, this bridge owns its controller. The 54 // unlike the typical ownership model, this bridge owns its controller. The
56 // controller is very thin and only exists to interact with Cocoa, but this 55 // controller is very thin and only exists to interact with Cocoa, but this
57 // class does the bulk of the work. 56 // class does the bulk of the work.
58 class HistoryMenuBridge : public TabRestoreServiceObserver, 57 class HistoryMenuBridge : public sessions::TabRestoreServiceObserver,
59 public MainMenuItem, 58 public MainMenuItem,
60 public history::HistoryServiceObserver { 59 public history::HistoryServiceObserver {
61 public: 60 public:
62 // This is a generalization of the data we store in the history menu because 61 // This is a generalization of the data we store in the history menu because
63 // we pull things from different sources with different data types. 62 // we pull things from different sources with different data types.
64 struct HistoryItem { 63 struct HistoryItem {
65 public: 64 public:
66 HistoryItem(); 65 HistoryItem();
67 // Copy constructor allowed. 66 // Copy constructor allowed.
68 HistoryItem(const HistoryItem& copy); 67 HistoryItem(const HistoryItem& copy);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 kVisitedSeparator = 440, // Separator before visited section. 118 kVisitedSeparator = 440, // Separator before visited section.
120 kVisitedTitle = 441, // Title of the visited section. 119 kVisitedTitle = 441, // Title of the visited section.
121 kVisited = 460, // Used for all entries in the visited section. 120 kVisited = 460, // Used for all entries in the visited section.
122 kShowFullSeparator = 480 // Separator after the visited section. 121 kShowFullSeparator = 480 // Separator after the visited section.
123 }; 122 };
124 123
125 explicit HistoryMenuBridge(Profile* profile); 124 explicit HistoryMenuBridge(Profile* profile);
126 ~HistoryMenuBridge() override; 125 ~HistoryMenuBridge() override;
127 126
128 // TabRestoreServiceObserver: 127 // TabRestoreServiceObserver:
129 void TabRestoreServiceChanged(TabRestoreService* service) override; 128 void TabRestoreServiceChanged(sessions::TabRestoreService* service) override;
130 void TabRestoreServiceDestroyed(TabRestoreService* service) override; 129 void TabRestoreServiceDestroyed(
130 sessions::TabRestoreService* service) override;
131 131
132 // MainMenuItem: 132 // MainMenuItem:
133 void ResetMenu() override; 133 void ResetMenu() override;
134 void BuildMenu() override; 134 void BuildMenu() override;
135 135
136 // Looks up an NSMenuItem in the |menu_item_map_| and returns the 136 // Looks up an NSMenuItem in the |menu_item_map_| and returns the
137 // corresponding HistoryItem. 137 // corresponding HistoryItem.
138 HistoryItem* HistoryItemForMenuItem(NSMenuItem* item); 138 HistoryItem* HistoryItemForMenuItem(NSMenuItem* item);
139 139
140 // I wish I has a "friend @class" construct. These are used by the HMCC 140 // I wish I has a "friend @class" construct. These are used by the HMCC
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 172
173 // Invoked when the History information has changed. 173 // Invoked when the History information has changed.
174 void OnHistoryChanged(); 174 void OnHistoryChanged();
175 175
176 // Callback method for when HistoryService query results are ready with the 176 // Callback method for when HistoryService query results are ready with the
177 // most recently-visited sites. 177 // most recently-visited sites.
178 void OnVisitedHistoryResults(history::QueryResults* results); 178 void OnVisitedHistoryResults(history::QueryResults* results);
179 179
180 // Creates a HistoryItem* for the given tab entry. Caller takes ownership of 180 // Creates a HistoryItem* for the given tab entry. Caller takes ownership of
181 // the result and must delete it when finished. 181 // the result and must delete it when finished.
182 HistoryItem* HistoryItemForTab(const TabRestoreService::Tab& entry); 182 HistoryItem* HistoryItemForTab(const sessions::TabRestoreService::Tab& entry);
183 183
184 // Helper function that sends an async request to the FaviconService to get 184 // Helper function that sends an async request to the FaviconService to get
185 // an icon. The callback will update the NSMenuItem directly. 185 // an icon. The callback will update the NSMenuItem directly.
186 void GetFaviconForHistoryItem(HistoryItem* item); 186 void GetFaviconForHistoryItem(HistoryItem* item);
187 187
188 // Callback for the FaviconService to return favicon image data when we 188 // Callback for the FaviconService to return favicon image data when we
189 // request it. This decodes the raw data, updates the HistoryItem, and then 189 // request it. This decodes the raw data, updates the HistoryItem, and then
190 // sets the image on the menu. Called on the same same thread that 190 // sets the image on the menu. Called on the same same thread that
191 // GetFaviconForHistoryItem() was called on (UI thread). 191 // GetFaviconForHistoryItem() was called on (UI thread).
192 void GotFaviconData(HistoryItem* item, 192 void GotFaviconData(HistoryItem* item,
(...skipping 19 matching lines...) Expand all
212 bool all_history, 212 bool all_history,
213 bool expired, 213 bool expired,
214 const history::URLRows& deleted_rows, 214 const history::URLRows& deleted_rows,
215 const std::set<GURL>& favicon_urls) override; 215 const std::set<GURL>& favicon_urls) override;
216 void OnHistoryServiceLoaded(history::HistoryService* service) override; 216 void OnHistoryServiceLoaded(history::HistoryService* service) override;
217 217
218 base::scoped_nsobject<HistoryMenuCocoaController> controller_; // strong 218 base::scoped_nsobject<HistoryMenuCocoaController> controller_; // strong
219 219
220 Profile* profile_; // weak 220 Profile* profile_; // weak
221 history::HistoryService* history_service_; // weak 221 history::HistoryService* history_service_; // weak
222 TabRestoreService* tab_restore_service_; // weak 222 sessions::TabRestoreService* tab_restore_service_; // weak
223 223
224 base::CancelableTaskTracker cancelable_task_tracker_; 224 base::CancelableTaskTracker cancelable_task_tracker_;
225 225
226 // Mapping of NSMenuItems to HistoryItems. This owns the HistoryItems until 226 // Mapping of NSMenuItems to HistoryItems. This owns the HistoryItems until
227 // they are removed and deleted via ClearMenuSection(). 227 // they are removed and deleted via ClearMenuSection().
228 std::map<NSMenuItem*, HistoryItem*> menu_item_map_; 228 std::map<NSMenuItem*, HistoryItem*> menu_item_map_;
229 229
230 // Requests to re-create the menu are coalesced. |create_in_progress_| is true 230 // Requests to re-create the menu are coalesced. |create_in_progress_| is true
231 // when either waiting for the history service to return query results, or 231 // when either waiting for the history service to return query results, or
232 // when the menu is rebuilding. |need_recreate_| is true whenever a rebuild 232 // when the menu is rebuilding. |need_recreate_| is true whenever a rebuild
233 // has been scheduled but is waiting for the current one to finish. 233 // has been scheduled but is waiting for the current one to finish.
234 bool create_in_progress_; 234 bool create_in_progress_;
235 bool need_recreate_; 235 bool need_recreate_;
236 236
237 // The default favicon if a HistoryItem does not have one. 237 // The default favicon if a HistoryItem does not have one.
238 base::scoped_nsobject<NSImage> default_favicon_; 238 base::scoped_nsobject<NSImage> default_favicon_;
239 239
240 ScopedObserver<history::HistoryService, history::HistoryServiceObserver> 240 ScopedObserver<history::HistoryService, history::HistoryServiceObserver>
241 history_service_observer_; 241 history_service_observer_;
242 242
243 DISALLOW_COPY_AND_ASSIGN(HistoryMenuBridge); 243 DISALLOW_COPY_AND_ASSIGN(HistoryMenuBridge);
244 }; 244 };
245 245
246 #endif // CHROME_BROWSER_UI_COCOA_HISTORY_MENU_BRIDGE_H_ 246 #endif // CHROME_BROWSER_UI_COCOA_HISTORY_MENU_BRIDGE_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser_tabrestore_browsertest.cc ('k') | chrome/browser/ui/cocoa/history_menu_bridge.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698