X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fui%2Fcocoa%2Fhistory_menu_bridge.mm;h=50456dc3b42fc303f6d71cf757fb6fb7bc5d42a7;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=d006a27bb113be551384ec29572b8f74013f064c;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/ui/cocoa/history_menu_bridge.mm b/src/chrome/browser/ui/cocoa/history_menu_bridge.mm index d006a27..50456dc 100644 --- a/src/chrome/browser/ui/cocoa/history_menu_bridge.mm +++ b/src/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_)); - registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_URL_VISITED, - content::Source(profile_)); registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_URLS_DELETED, content::Source(profile_)); + history_service_->RemoveObserver(this); } else { registrar_.Remove(this, chrome::NOTIFICATION_HISTORY_LOADED, content::Source(profile_)); @@ -158,9 +157,8 @@ 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::TabRestoreServiceChanged(TabRestoreService* service) { @@ -274,6 +272,14 @@ void HistoryMenuBridge::BuildMenu() { CreateMenu(); } +void HistoryMenuBridge::OnURLVisited(HistoryService* history_service, + ui::PageTransition transition, + const history::URLRow& row, + const history::RedirectList& redirects, + base::Time visit_time) { + OnHistoryChanged(); +} + HistoryMenuBridge::HistoryItem* HistoryMenuBridge::HistoryItemForMenuItem( NSMenuItem* item) { std::map::iterator it = menu_item_map_.find(item); @@ -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_)); - registrar_.Add(this, chrome::NOTIFICATION_HISTORY_URL_VISITED, - content::Source(profile_)); registrar_.Add(this, chrome::NOTIFICATION_HISTORY_URLS_DELETED, content::Source(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();