Chromium Code Reviews| Index: chrome/browser/google/google_url_tracker_map_entry.cc |
| diff --git a/chrome/browser/google/google_url_tracker_map_entry.cc b/chrome/browser/google/google_url_tracker_map_entry.cc |
| index ee1ee0f2919d59f893c1813a7d2290844e86afce..ab9208a7a67da00267f9acb8f384720e8d99f7fa 100644 |
| --- a/chrome/browser/google/google_url_tracker_map_entry.cc |
| +++ b/chrome/browser/google/google_url_tracker_map_entry.cc |
| @@ -6,18 +6,16 @@ |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/google/google_url_tracker.h" |
| -#include "chrome/browser/google/google_url_tracker_infobar_delegate.h" |
| #include "components/infobars/core/infobar.h" |
| #include "content/public/browser/notification_details.h" |
| #include "content/public/browser/notification_source.h" |
| - |
| GoogleURLTrackerMapEntry::GoogleURLTrackerMapEntry( |
| GoogleURLTracker* google_url_tracker, |
| - InfoBarService* infobar_service, |
| + infobars::InfoBarManager* infobar_manager, |
| scoped_ptr<GoogleURLTrackerNavigationHelper> navigation_helper) |
| : google_url_tracker_(google_url_tracker), |
| - infobar_service_(infobar_service), |
| + infobar_manager_(infobar_manager), |
| infobar_delegate_(NULL), |
| navigation_helper_(navigation_helper.Pass()) { |
| } |
| @@ -31,10 +29,11 @@ void GoogleURLTrackerMapEntry::Observe( |
| const content::NotificationDetails& details) { |
| DCHECK(infobar_delegate_); |
| DCHECK_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, type); |
| - DCHECK_EQ(infobar_service_, content::Source<InfoBarService>(source).ptr()); |
| + DCHECK_EQ(infobar_manager_, |
| + content::Source<infobars::InfoBarManager>(source).ptr()); |
| if (content::Details<infobars::InfoBar::RemovedDetails>( |
| details)->first->delegate() == infobar_delegate_) { |
| - google_url_tracker_->DeleteMapEntryForService(infobar_service_); |
| + google_url_tracker_->DeleteMapEntryForManager(infobar_manager_); |
| // WARNING: At this point |this| has been deleted! |
| } |
| } |
| @@ -42,18 +41,24 @@ void GoogleURLTrackerMapEntry::Observe( |
| void GoogleURLTrackerMapEntry::SetInfoBarDelegate( |
| GoogleURLTrackerInfoBarDelegate* infobar_delegate) { |
| DCHECK(!infobar_delegate_); |
| + |
| + // Transfer ownership of |navigation_helper_| to the infobar delegate as the |
| + // infobar delegate has need of it after this object has been destroyed in |
| + // certain cases. |
|
Peter Kasting
2014/05/28 22:19:04
Nit: Perhaps say what those cases are
blundell
2014/05/30 09:39:18
Done.
|
| + infobar_delegate->set_navigation_helper(navigation_helper_.Pass()); |
| infobar_delegate_ = infobar_delegate; |
| - registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
| - content::Source<InfoBarService>(infobar_service_)); |
| + registrar_.Add(this, |
| + chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
| + content::Source<infobars::InfoBarManager>(infobar_manager_)); |
| } |
| void GoogleURLTrackerMapEntry::Close(bool redo_search) { |
| if (infobar_delegate_) { |
| infobar_delegate_->Close(redo_search); |
| } else { |
| - // WARNING: |infobar_service_| may point to a deleted object. Do not |
| + // WARNING: |infobar_manager_| may point to a deleted object. Do not |
| // dereference it! See GoogleURLTracker::OnTabClosed(). |
| - google_url_tracker_->DeleteMapEntryForService(infobar_service_); |
| + google_url_tracker_->DeleteMapEntryForManager(infobar_manager_); |
| } |
| // WARNING: At this point |this| has been deleted! |
| } |