Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: chrome/browser/google/google_url_tracker.h

Issue 11114009: Split the existing GoogleURLTrackerInfoBarDelegate into two classes (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/google/google_url_tracker.h
===================================================================
--- chrome/browser/google/google_url_tracker.h (revision 161690)
+++ chrome/browser/google/google_url_tracker.h (working copy)
@@ -96,19 +96,13 @@
friend class GoogleURLTrackerInfoBarDelegate;
Ilya Sherman 2012/10/16 20:16:24 Whoa, I just noticed this. How 'bout we expose pu
Peter Kasting 2012/10/16 23:29:35 OK. I hadn't done this so far because the current
friend class GoogleURLTrackerTest;
- struct MapEntry {
- MapEntry(); // Required by STL.
- MapEntry(GoogleURLTrackerInfoBarDelegate* infobar,
- const content::NotificationSource& navigation_controller_source,
- const content::NotificationSource& web_contents_source);
- ~MapEntry();
+ class MapEntry;
Ilya Sherman 2012/10/16 20:16:24 How about defining this in a separate header file?
Peter Kasting 2012/10/16 23:29:35 :/ I'm less convinced of the benefits of this, but
- GoogleURLTrackerInfoBarDelegate* infobar;
- content::NotificationSource navigation_controller_source;
- content::NotificationSource web_contents_source;
- };
+ typedef std::map<const InfoBarTabHelper*, MapEntry*> InfoBarMap;
- typedef std::map<const InfoBarTabHelper*, MapEntry> InfoBarMap;
+ // Creates an infobar delegate and adds it to |infobar_helper|. Returns the
+ // delegate pointer on success or NULL on failure. The caller does not own
+ // the returned object, the InfoBarTabHelper does.
typedef GoogleURLTrackerInfoBarDelegate* (*InfoBarCreator)(
InfoBarTabHelper* infobar_helper,
GoogleURLTracker* google_url_tracker,
@@ -129,10 +123,12 @@
virtual void Shutdown() OVERRIDE;
// Callbacks from GoogleURLTrackerInfoBarDelegate:
- void AcceptGoogleURL(const GURL& google_url, bool redo_searches);
- void CancelGoogleURL(const GURL& google_url);
- void InfoBarClosed(const InfoBarTabHelper* infobar_helper);
+ void AcceptGoogleURL(bool redo_searches);
+ void CancelGoogleURL();
+ // Callback from MapEntry:
+ void DeleteMapEntryForHelper(const InfoBarTabHelper* infobar_helper);
+
// Registers consumer interest in getting an updated URL from the server.
// Observe chrome::NOTIFICATION_GOOGLE_URL_UPDATED to be notified when the URL
// changes.
@@ -172,7 +168,7 @@
// |search_url| is valid when this call is due to a successful navigation
// (indicating that we should show or update the relevant infobar) as opposed
// to tab closure (which means we should delete the infobar).
- void OnNavigationCommittedOrTabClosed(const InfoBarTabHelper* infobar_helper,
+ void OnNavigationCommittedOrTabClosed(InfoBarTabHelper* infobar_helper,
const GURL& search_url);
// Called by Observe() when an instant navigation occurs. This will call
@@ -202,9 +198,6 @@
Profile* profile_;
content::NotificationRegistrar registrar_;
InfoBarCreator infobar_creator_;
- // TODO(ukai): GoogleURLTracker should track google domain (e.g. google.co.uk)
- // rather than URL (e.g. http://www.google.co.uk/), so that user could
- // configure to use https in search engine templates.
Ilya Sherman 2012/10/16 20:16:24 Is this being removed because it's no longer appro
Peter Kasting 2012/10/16 23:29:35 We solved this problem in a different way by suppo
GURL google_url_;
GURL fetched_google_url_;
base::WeakPtrFactory<GoogleURLTracker> weak_ptr_factory_;
@@ -229,4 +222,43 @@
DISALLOW_COPY_AND_ASSIGN(GoogleURLTracker);
};
+class GoogleURLTracker::MapEntry : public content::NotificationObserver {
+ public:
+ MapEntry(GoogleURLTracker* google_url_tracker,
+ InfoBarTabHelper* infobar_helper,
+ const content::NotificationSource& navigation_controller_source,
+ const content::NotificationSource& web_contents_source);
+ virtual ~MapEntry();
+
+ bool has_infobar() const { return !!infobar_; }
+ GoogleURLTrackerInfoBarDelegate* infobar() { return infobar_; }
+ void SetInfoBar(GoogleURLTrackerInfoBarDelegate* infobar);
+
+ const content::NotificationSource& navigation_controller_source() const {
+ return navigation_controller_source_;
+ }
+ const content::NotificationSource& web_contents_source() const {
+ return web_contents_source_;
+ }
+
+ void Close(bool redo_search);
+
+ private:
+ friend class GoogleURLTrackerTest;
+
+ // content::NotificationObserver:
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
+ content::NotificationRegistrar registrar_;
+ GoogleURLTracker* google_url_tracker_;
+ InfoBarTabHelper* infobar_helper_;
Ilya Sherman 2012/10/16 20:16:24 nit: Can these be const members?
Peter Kasting 2012/10/16 23:29:35 Added as much const as possible.
+ GoogleURLTrackerInfoBarDelegate* infobar_;
+ content::NotificationSource navigation_controller_source_;
+ content::NotificationSource web_contents_source_;
Ilya Sherman 2012/10/16 20:16:24 nit: Can these be const members?
Peter Kasting 2012/10/16 23:29:35 Yes.
+
+ DISALLOW_COPY_AND_ASSIGN(MapEntry);
+};
+
#endif // CHROME_BROWSER_GOOGLE_GOOGLE_URL_TRACKER_H_
« no previous file with comments | « no previous file | chrome/browser/google/google_url_tracker.cc » ('j') | chrome/browser/google/google_url_tracker.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698