Index: chrome/browser/google/google_url_tracker_map_entry.cc |
=================================================================== |
--- chrome/browser/google/google_url_tracker_map_entry.cc (revision 0) |
+++ chrome/browser/google/google_url_tracker_map_entry.cc (working copy) |
@@ -0,0 +1,55 @@ |
+// Copyright (c) 2012 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. |
+ |
+#include "chrome/browser/google/google_url_tracker_map_entry.h" |
+ |
+#include "chrome/browser/google/google_url_tracker.h" |
+#include "chrome/browser/google/google_url_tracker_infobar_delegate.h" |
+#include "chrome/browser/infobars/infobar.h" |
+#include "chrome/common/chrome_notification_types.h" |
+#include "content/public/browser/notification_details.h" |
+ |
+ |
+GoogleURLTrackerMapEntry::GoogleURLTrackerMapEntry( |
+ GoogleURLTracker* google_url_tracker, |
+ InfoBarTabHelper* infobar_helper, |
+ const content::NotificationSource& navigation_controller_source, |
+ const content::NotificationSource& web_contents_source) |
+ : google_url_tracker_(google_url_tracker), |
+ infobar_helper_(infobar_helper), |
+ infobar_(NULL), |
+ navigation_controller_source_(navigation_controller_source), |
+ web_contents_source_(web_contents_source) { |
+} |
+ |
+GoogleURLTrackerMapEntry::~GoogleURLTrackerMapEntry() { |
+} |
+ |
+void GoogleURLTrackerMapEntry::Observe( |
+ int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) { |
+ DCHECK_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, type); |
+ DCHECK_EQ(infobar_helper_, content::Source<InfoBarTabHelper>(source).ptr()); |
+ if (content::Details<InfoBarRemovedDetails>(details)->first == infobar_) { |
+ google_url_tracker_->DeleteMapEntryForHelper(infobar_helper_); |
+ // WARNING: At this point |this| has been deleted! |
+ } |
+} |
+ |
+void GoogleURLTrackerMapEntry::SetInfoBar( |
+ GoogleURLTrackerInfoBarDelegate* infobar) { |
+ DCHECK(!infobar_); |
+ infobar_ = infobar; |
+ registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
+ content::Source<InfoBarTabHelper>(infobar_helper_)); |
+} |
+ |
+void GoogleURLTrackerMapEntry::Close(bool redo_search) { |
+ if (infobar_) |
+ infobar_->Close(redo_search); |
+ else |
+ google_url_tracker_->DeleteMapEntryForHelper(infobar_helper_); |
+ // WARNING: At this point |this| has been deleted! |
+} |
Property changes on: chrome/browser/google/google_url_tracker_map_entry.cc |
___________________________________________________________________ |
Added: svn:eol-style |
## -0,0 +1 ## |
+LF |
\ No newline at end of property |