summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/history_menu_bridge.h
diff options
context:
space:
mode:
authorrsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-01 15:30:31 +0000
committerrsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-01 15:30:31 +0000
commit13935ed83f01a52144b89f9c9cae417589e07024 (patch)
tree943fbbb5f8ca0199422779e37f12f38b67a6372b /chrome/browser/cocoa/history_menu_bridge.h
parentd0a5d9e5d3788ebbe7b4793aca7337522f7b904b (diff)
downloadchromium_src-13935ed83f01a52144b89f9c9cae417589e07024.zip
chromium_src-13935ed83f01a52144b89f9c9cae417589e07024.tar.gz
chromium_src-13935ed83f01a52144b89f9c9cae417589e07024.tar.bz2
Revert 40275 - Maybe broke TabRestoreUITest.RestoreIntoSameWindow? - [Mac] Add favicons to the history menu
BUG=20464 TEST=Open History menu, see icons. Review URL: http://codereview.chromium.org/660250 TBR=rsesek@chromium.org Review URL: http://codereview.chromium.org/660277 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40277 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/history_menu_bridge.h')
-rw-r--r--chrome/browser/cocoa/history_menu_bridge.h98
1 files changed, 27 insertions, 71 deletions
diff --git a/chrome/browser/cocoa/history_menu_bridge.h b/chrome/browser/cocoa/history_menu_bridge.h
index 488909f..c67ba83 100644
--- a/chrome/browser/cocoa/history_menu_bridge.h
+++ b/chrome/browser/cocoa/history_menu_bridge.h
@@ -1,16 +1,32 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// C++ controller for the history menu; one per AppController (means there
+// is only one). This class observes various data sources, namely the
+// HistoryService and the TabRestoreService, and then updates the NSMenu when
+// there is new data.
+//
+// The history menu is broken up into sections: most visisted and recently
+// closed. The overall menu has a tag of IDC_HISTORY_MENU, with two sections
+// IDC_HISTORY_MENU_VISITED and IDC_HISTORY_MENU_CLOSED, which are used to
+// delineate the two sections. Items within these sections are assigned tags
+// within IDC_HISTORY_MENU_* + 1..99. Most Chromium Cocoa menu items are static
+// from a nib (e.g. New Tab), but may be enabled/disabled under certain
+// circumstances (e.g. Cut and Paste). In addition, most Cocoa menu items have
+// firstResponder: as a target. Unusually, bookmark menu items are created
+// dynamically. They also have a target of HistoryMenuCocoaController, not
+// firstResponder. See HistoryMenuBridge::AddItemToMenu()). Unlike most of our
+// Cocoa-Bridge classes, the HMCC is not at the root of the ownership model
+// because its only function is to respond to menu item actions; everything
+// else is done in this bridge.
+
#ifndef CHROME_BROWSER_COCOA_HISTORY_MENU_BRIDGE_H_
#define CHROME_BROWSER_COCOA_HISTORY_MENU_BRIDGE_H_
#import <Cocoa/Cocoa.h>
#include "base/scoped_nsobject.h"
-#include "base/scoped_ptr.h"
-#include "base/scoped_vector.h"
#include "chrome/browser/cancelable_request.h"
-#import "chrome/browser/favicon_service.h"
#include "chrome/browser/history/history.h"
#include "chrome/browser/sessions/tab_restore_service.h"
#include "chrome/common/notification_observer.h"
@@ -22,56 +38,20 @@ class Profile;
class TabNavigationEntry;
@class HistoryMenuCocoaController;
-// C++ controller for the history menu; one per AppController (means there
-// is only one). This class observes various data sources, namely the
-// HistoryService and the TabRestoreService, and then updates the NSMenu when
-// there is new data.
-//
-// The history menu is broken up into sections: most visisted and recently
-// closed. The overall menu has a tag of IDC_HISTORY_MENU, with two sections
-// IDC_HISTORY_MENU_VISITED and IDC_HISTORY_MENU_CLOSED, which are used to
-// delineate the two sections. Items within these sections are assigned tags
-// within IDC_HISTORY_MENU_* + 1..99. Most Chromium Cocoa menu items are static
-// from a nib (e.g. New Tab), but may be enabled/disabled under certain
-// circumstances (e.g. Cut and Paste). In addition, most Cocoa menu items have
-// firstResponder: as a target. Unusually, history menu items are created
-// dynamically. They also have a target of HistoryMenuCocoaController, not
-// firstResponder. See HistoryMenuBridge::AddItemToMenu(). Unlike most of our
-// Cocoa-Bridge classes, the HMCC is not at the root of the ownership model
-// because its only function is to respond to menu item actions; everything
-// else is done in this bridge.
class HistoryMenuBridge : public NotificationObserver,
public TabRestoreService::Observer {
public:
// This is a generalization of the data we store in the history menu because
// we pull things from different sources with different data types.
struct HistoryItem {
- public:
- HistoryItem() : icon_requested(false) {}
+ HistoryItem() {}
~HistoryItem() {}
- // The title for the menu item.
string16 title;
- // The URL that will be navigated to if the user selects this item.
GURL url;
- // Favicon for the URL.
- scoped_nsobject<NSImage> icon;
-
- // If the icon is being requested from the FaviconService, |icon_requested|
- // will be true and |icon_handle| will be non-NULL. If this is false, then
- // |icon_handle| will be NULL.
- bool icon_requested;
- // The Handle given to us by the FaviconService for the icon fetch request.
- FaviconService::Handle icon_handle;
-
- // The pointer to the item after it has been created. Weak.
- NSMenuItem* menu_item;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(HistoryItem);
};
- explicit HistoryMenuBridge(Profile* profile);
+ HistoryMenuBridge(Profile* profile);
virtual ~HistoryMenuBridge();
// Overriden from NotificationObserver.
@@ -87,8 +67,8 @@ class HistoryMenuBridge : public NotificationObserver,
// to access model information when responding to actions.
HistoryService* service();
Profile* profile();
- const ScopedVector<HistoryItem>* const visited_results();
- const ScopedVector<HistoryItem>* const closed_results();
+ std::vector<HistoryItem>* visited_results();
+ std::vector<HistoryItem>* closed_results();
protected:
// Return the History menu.
@@ -100,7 +80,7 @@ class HistoryMenuBridge : public NotificationObserver,
void ClearMenuSection(NSMenu* menu, NSInteger tag, unsigned int count);
// Adds a given title and URL to HistoryMenu() with a certain tag and index.
- void AddItemToMenu(HistoryItem* item,
+ void AddItemToMenu(const HistoryItem& item,
NSMenu* menu,
NSInteger tag,
NSInteger index);
@@ -122,24 +102,6 @@ class HistoryMenuBridge : public NotificationObserver,
// to |closed_results_|. Return TRUE if the operation completed successfully.
bool AddNavigationForTab(const TabRestoreService::Tab& entry);
- // Helper function that sends an async request to the FaviconService to get
- // an icon. The callback will update the NSMenuItem directly.
- void GetFaviconForHistoryItem(HistoryItem* item);
-
- // Callback for the FaviconService to return favicon image data when we
- // request it. This decodes the raw data, updates the HistoryItem, and then
- // sets the image on the menu. Called on the same same thread that
- // GetFaviconForHistoryItem() was called on (UI thread).
- void GotFaviconData(FaviconService::Handle handle,
- bool know_favicon,
- scoped_refptr<RefCountedBytes> data,
- bool expired,
- GURL url);
-
- // Cancels a favicon load request for a given HistoryItem, if one is in
- // progress.
- void CancelFaviconRequest(HistoryItem* item);
-
private:
friend class HistoryMenuBridgeTest;
@@ -153,11 +115,8 @@ class HistoryMenuBridge : public NotificationObserver,
CancelableRequestConsumer cancelable_request_consumer_;
// The most recent results we've received.
- ScopedVector<HistoryItem> visited_results_;
- ScopedVector<HistoryItem> closed_results_;
-
- // Maps HistoryItems to favicon request Handles.
- CancelableRequestConsumerTSimple<HistoryItem*> favicon_consumer_;
+ std::vector<HistoryItem> visited_results_;
+ std::vector<HistoryItem> closed_results_;
// We coalesce requests to re-create the menu. |create_in_progress_| is true
// whenever we are either waiting for the history service to return query
@@ -166,9 +125,6 @@ class HistoryMenuBridge : public NotificationObserver,
bool create_in_progress_;
bool need_recreate_;
- // The default favicon if a HistoryItem does not have one.
- scoped_nsobject<NSImage> default_favicon_;
-
DISALLOW_COPY_AND_ASSIGN(HistoryMenuBridge);
};