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

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
« no previous file with comments | « no previous file | chrome/browser/google/google_url_tracker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/google/google_url_tracker.h
===================================================================
--- chrome/browser/google/google_url_tracker.h (revision 162274)
+++ chrome/browser/google/google_url_tracker.h (working copy)
@@ -9,20 +9,17 @@
#include <string>
#include <utility>
+#include "base/callback_forward.h"
#include "base/gtest_prod_util.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
+#include "chrome/browser/google/google_url_tracker_map_entry.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
-#include "content/public/browser/notification_source.h"
#include "googleurl/src/gurl.h"
#include "net/base/network_change_notifier.h"
#include "net/url_request/url_fetcher.h"
#include "net/url_request/url_fetcher_delegate.h"
-class GoogleURLTrackerInfoBarDelegate;
-class InfoBarTabHelper;
class PrefService;
class Profile;
@@ -89,31 +86,24 @@
// When |profile| is NULL or a testing profile, this function does nothing.
static void GoogleURLSearchCommitted(Profile* profile);
+ // No one but GoogleURLTrackerInfoBarDelegate or test code should call these.
+ void AcceptGoogleURL(bool redo_searches);
+ void CancelGoogleURL();
+ const GURL& google_url() const { return google_url_; }
+ const GURL& fetched_google_url() const { return fetched_google_url_; }
+
+ // No one but GoogleURLTrackerMapEntry should call this.
+ void DeleteMapEntryForHelper(const InfoBarTabHelper* infobar_helper);
+
static const char kDefaultGoogleHomepage[];
static const char kSearchDomainCheckURL[];
private:
- friend class GoogleURLTrackerInfoBarDelegate;
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();
+ typedef std::map<const InfoBarTabHelper*,
+ GoogleURLTrackerMapEntry*> InfoBarMap;
- GoogleURLTrackerInfoBarDelegate* infobar;
- content::NotificationSource navigation_controller_source;
- content::NotificationSource web_contents_source;
- };
-
- typedef std::map<const InfoBarTabHelper*, MapEntry> InfoBarMap;
- typedef GoogleURLTrackerInfoBarDelegate* (*InfoBarCreator)(
- InfoBarTabHelper* infobar_helper,
- GoogleURLTracker* google_url_tracker,
- const GURL& new_google_url);
-
// net::URLFetcherDelegate:
virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
@@ -128,11 +118,6 @@
// ProfileKeyedService:
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);
-
// 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 +157,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
@@ -196,15 +181,20 @@
// NAV_ENTRY_COMMITTED, as we no longer need them until another search is
// committed.
void UnregisterForEntrySpecificNotifications(
- const MapEntry& map_entry,
+ const GoogleURLTrackerMapEntry& map_entry,
bool must_be_listening_for_commit);
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.
+
+ // Creates an infobar delegate and adds it to the provided InfoBarHelper.
+ // Returns the delegate pointer on success or NULL on failure. The caller
+ // does not own the returned object, the InfoBarTabHelper does.
+ base::Callback<GoogleURLTrackerInfoBarDelegate*(
+ InfoBarTabHelper*,
+ GoogleURLTracker*,
+ const GURL&)> infobar_creator_;
+
GURL google_url_;
GURL fetched_google_url_;
base::WeakPtrFactory<GoogleURLTracker> weak_ptr_factory_;
« no previous file with comments | « no previous file | chrome/browser/google/google_url_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698