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! |
} |