| Index: chrome/browser/google/google_url_tracker_infobar_delegate.h
|
| diff --git a/chrome/browser/google/google_url_tracker_infobar_delegate.h b/chrome/browser/google/google_url_tracker_infobar_delegate.h
|
| index 43972d64175d197c3880beda614d90b258e7eac3..4905e1c8e82241d45d0de21746b1f7e2bb3f1f16 100644
|
| --- a/chrome/browser/google/google_url_tracker_infobar_delegate.h
|
| +++ b/chrome/browser/google/google_url_tracker_infobar_delegate.h
|
| @@ -9,22 +9,37 @@
|
| #include "url/gurl.h"
|
|
|
| class GoogleURLTracker;
|
| -class InfoBarService;
|
| +class GoogleURLTrackerNavigationHelper;
|
| +
|
| +namespace infobars {
|
| +class InfoBarManager;
|
| +}
|
|
|
| // This infobar is shown by the GoogleURLTracker when the Google base URL has
|
| // changed.
|
| class GoogleURLTrackerInfoBarDelegate : public ConfirmInfoBarDelegate {
|
| public:
|
| // Creates a Google URL tracker infobar and delegate and adds the infobar to
|
| - // |infobar_service|. Returns the infobar if it was successfully added.
|
| - static infobars::InfoBar* Create(InfoBarService* infobar_service,
|
| - GoogleURLTracker* google_url_tracker,
|
| - const GURL& search_url);
|
| + // |infobar_manager|. Returns the infobar if it was successfully added.
|
| + static infobars::InfoBar* Create(
|
| + infobars::InfoBarManager* infobar_manager,
|
| + GoogleURLTracker* google_url_tracker,
|
| + const GURL& search_url);
|
|
|
| // ConfirmInfoBarDelegate:
|
| virtual bool Accept() OVERRIDE;
|
| virtual bool Cancel() OVERRIDE;
|
|
|
| + GoogleURLTrackerNavigationHelper* navigation_helper() {
|
| + return navigation_helper_weak_ptr_;
|
| + }
|
| +
|
| + void set_navigation_helper(
|
| + scoped_ptr<GoogleURLTrackerNavigationHelper> navigation_helper) {
|
| + navigation_helper_ = navigation_helper.Pass();
|
| + navigation_helper_weak_ptr_ = navigation_helper_.get();
|
| + }
|
| +
|
| // Other than set_pending_id(), these accessors are only used by test code.
|
| const GURL& search_url() const { return search_url_; }
|
| void set_search_url(const GURL& search_url) { search_url_ = search_url; }
|
| @@ -36,8 +51,9 @@ class GoogleURLTrackerInfoBarDelegate : public ConfirmInfoBarDelegate {
|
| virtual void Close(bool redo_search);
|
|
|
| protected:
|
| - GoogleURLTrackerInfoBarDelegate(GoogleURLTracker* google_url_tracker,
|
| - const GURL& search_url);
|
| + GoogleURLTrackerInfoBarDelegate(
|
| + GoogleURLTracker* google_url_tracker,
|
| + const GURL& search_url);
|
| virtual ~GoogleURLTrackerInfoBarDelegate();
|
|
|
| private:
|
| @@ -50,6 +66,14 @@ class GoogleURLTrackerInfoBarDelegate : public ConfirmInfoBarDelegate {
|
| const NavigationDetails& details) const OVERRIDE;
|
|
|
| GoogleURLTracker* google_url_tracker_;
|
| + scoped_ptr<GoogleURLTrackerNavigationHelper> navigation_helper_;
|
| +
|
| + // During Close(), this object gives up ownership of |navigation_helper_|,
|
| + // which then outlives this object. Sometimes after this point, other classes
|
| + // still attempt to call navigation_helper() to access the (still-valid)
|
| + // instance. The NavigationHelper instance is stored as a weak pointer in
|
| + // addition to a strong pointer to facilitate this case.
|
| + GoogleURLTrackerNavigationHelper* navigation_helper_weak_ptr_;
|
| GURL search_url_;
|
| int pending_id_;
|
|
|
|
|