| Index: chrome/browser/ui/cocoa/history_menu_bridge.mm
|
| diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.mm b/chrome/browser/ui/cocoa/history_menu_bridge.mm
|
| index d006a27bb113be551384ec29572b8f74013f064c..4fb963bc01b32c0d4f6bb2fb6dc741fd6276ac66 100644
|
| --- a/chrome/browser/ui/cocoa/history_menu_bridge.mm
|
| +++ b/chrome/browser/ui/cocoa/history_menu_bridge.mm
|
| @@ -117,10 +117,9 @@ HistoryMenuBridge::~HistoryMenuBridge() {
|
| if (history_service_) {
|
| registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_URLS_MODIFIED,
|
| content::Source<Profile>(profile_));
|
| - registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_URL_VISITED,
|
| - content::Source<Profile>(profile_));
|
| registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
|
| content::Source<Profile>(profile_));
|
| + history_service_->RemoveObserver(this);
|
| } else {
|
| registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_LOADED,
|
| content::Source<Profile>(profile_));
|
| @@ -158,9 +157,16 @@ void HistoryMenuBridge::Observe(int type,
|
| }
|
|
|
| // All other notification types that we observe indicate that the history has
|
| - // changed and we need to rebuild.
|
| - need_recreate_ = true;
|
| - CreateMenu();
|
| + // changed.
|
| + OnHistoryChanged();
|
| +}
|
| +
|
| +void HistoryMenuBridge::OnURLVisited(HistoryService* history_service,
|
| + ui::PageTransition transition,
|
| + const history::URLRow& row,
|
| + const history::RedirectList& redirects,
|
| + base::Time visit_time) {
|
| + OnHistoryChanged();
|
| }
|
|
|
| void HistoryMenuBridge::TabRestoreServiceChanged(TabRestoreService* service) {
|
| @@ -360,12 +366,12 @@ NSMenuItem* HistoryMenuBridge::AddItemToMenu(HistoryItem* item,
|
| }
|
|
|
| void HistoryMenuBridge::Init() {
|
| + DCHECK(history_service_);
|
| registrar_.Add(this, chrome::NOTIFICATION_HISTORY_URLS_MODIFIED,
|
| content::Source<Profile>(profile_));
|
| - registrar_.Add(this, chrome::NOTIFICATION_HISTORY_URL_VISITED,
|
| - content::Source<Profile>(profile_));
|
| registrar_.Add(this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
|
| content::Source<Profile>(profile_));
|
| + history_service_->AddObserver(this);
|
| }
|
|
|
| void HistoryMenuBridge::CreateMenu() {
|
| @@ -389,6 +395,12 @@ void HistoryMenuBridge::CreateMenu() {
|
| &cancelable_task_tracker_);
|
| }
|
|
|
| +void HistoryMenuBridge::OnHistoryChanged() {
|
| + // History has changed, rebuild menu.
|
| + need_recreate_ = true;
|
| + CreateMenu();
|
| +}
|
| +
|
| void HistoryMenuBridge::OnVisitedHistoryResults(
|
| history::QueryResults* results) {
|
| NSMenu* menu = HistoryMenu();
|
|
|