Index: chrome/browser/google/google_url_tracker_unittest.cc |
diff --git a/chrome/browser/google/google_url_tracker_unittest.cc b/chrome/browser/google/google_url_tracker_unittest.cc |
index 1ebe61369cfad3fc5d09681fe5f7d55e12707313..e77fb50424e4cf437b21612b4ffb260c83b41fac 100644 |
--- a/chrome/browser/google/google_url_tracker_unittest.cc |
+++ b/chrome/browser/google/google_url_tracker_unittest.cc |
@@ -63,36 +63,46 @@ |
// GoogleURLTrackerTest, so they can call members on it. |
-// TestNotificationObserver --------------------------------------------------- |
- |
-class TestNotificationObserver : public content::NotificationObserver { |
+// TestCallbackListener --------------------------------------------------- |
+ |
+class TestCallbackListener { |
public: |
- TestNotificationObserver(); |
- virtual ~TestNotificationObserver(); |
- |
- virtual void Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) OVERRIDE; |
+ TestCallbackListener(); |
+ virtual ~TestCallbackListener(); |
+ |
+ bool HasRegisteredCallback(); |
+ void RegisterCallback(GoogleURLTracker* google_url_tracker); |
+ |
bool notified() const { return notified_; } |
void clear_notified() { notified_ = false; } |
private: |
+ void OnGoogleURLUpdated(GURL old_url, GURL new_url); |
+ |
bool notified_; |
+ scoped_ptr<GoogleURLTracker::Subscription> google_url_updated_subscription_; |
}; |
-TestNotificationObserver::TestNotificationObserver() : notified_(false) { |
-} |
- |
-TestNotificationObserver::~TestNotificationObserver() { |
-} |
- |
-void TestNotificationObserver::Observe( |
- int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
+TestCallbackListener::TestCallbackListener() : notified_(false) { |
+} |
+ |
+TestCallbackListener::~TestCallbackListener() { |
+} |
+ |
+void TestCallbackListener::OnGoogleURLUpdated(GURL old_url, GURL new_url) { |
notified_ = true; |
} |
+bool TestCallbackListener::HasRegisteredCallback() { |
+ return google_url_updated_subscription_.get(); |
+} |
+ |
+void TestCallbackListener::RegisterCallback( |
+ GoogleURLTracker* google_url_tracker) { |
+ google_url_updated_subscription_ = |
+ google_url_tracker->RegisterCallback(base::Bind( |
+ &TestCallbackListener::OnGoogleURLUpdated, base::Unretained(this))); |
+} |
// TestGoogleURLTrackerNavigationHelper ------------------------------------- |
@@ -232,8 +242,8 @@ |
GoogleURLTrackerInfoBarDelegate* GetInfoBarDelegate(intptr_t unique_id); |
void ExpectDefaultURLs() const; |
void ExpectListeningForCommit(intptr_t unique_id, bool listening); |
- bool observer_notified() const { return observer_.notified(); } |
- void clear_observer_notified() { observer_.clear_notified(); } |
+ bool listener_notified() const { return listener_.notified(); } |
+ void clear_listener_notified() { listener_.clear_notified(); } |
private: |
// Since |infobar_service| is really a magic number rather than an actual |
@@ -251,11 +261,10 @@ |
// net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). |
scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
net::TestURLFetcherFactory fetcher_factory_; |
- content::NotificationRegistrar registrar_; |
- TestNotificationObserver observer_; |
GoogleURLTrackerNavigationHelper* nav_helper_; |
TestingProfile profile_; |
scoped_ptr<GoogleURLTracker> google_url_tracker_; |
+ TestCallbackListener listener_; |
// This tracks the different "tabs" a test has "opened", so we can close them |
// properly before shutting down |google_url_tracker_|, which expects that. |
std::set<int> unique_ids_seen_; |
@@ -307,7 +316,6 @@ |
CloseTab(*unique_ids_seen_.begin()); |
nav_helper_ = NULL; |
- google_url_tracker_.reset(); |
network_change_notifier_.reset(); |
} |
@@ -331,12 +339,8 @@ |
} |
void GoogleURLTrackerTest::RequestServerCheck() { |
- if (!registrar_.IsRegistered(&observer_, |
- chrome::NOTIFICATION_GOOGLE_URL_UPDATED, |
- content::Source<Profile>(&profile_))) { |
- registrar_.Add(&observer_, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, |
- content::Source<Profile>(&profile_)); |
- } |
+ if (!listener_.HasRegisteredCallback()) |
+ listener_.RegisterCallback(google_url_tracker_.get()); |
google_url_tracker_->SetNeedToFetch(); |
} |
@@ -507,21 +511,21 @@ |
EXPECT_FALSE(GetFetcher()); |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
ExpectDefaultURLs(); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, UpdateOnFirstRun) { |
RequestServerCheck(); |
EXPECT_FALSE(GetFetcher()); |
ExpectDefaultURLs(); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
FinishSleep(); |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
// GoogleURL should be updated, becase there was no last prompted URL. |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
- EXPECT_TRUE(observer_notified()); |
+ EXPECT_TRUE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) { |
@@ -530,7 +534,7 @@ |
RequestServerCheck(); |
EXPECT_FALSE(GetFetcher()); |
ExpectDefaultURLs(); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
FinishSleep(); |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
@@ -538,7 +542,7 @@ |
// GoogleURL should not be updated, because the fetched and prompted URLs |
// match. |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, DontPromptOnBadReplies) { |
@@ -547,14 +551,14 @@ |
RequestServerCheck(); |
EXPECT_FALSE(GetFetcher()); |
ExpectDefaultURLs(); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
// Old-style domain string. |
FinishSleep(); |
MockSearchDomainCheckResponse(".google.co.in"); |
EXPECT_EQ(GURL(), fetched_google_url()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -564,7 +568,7 @@ |
MockSearchDomainCheckResponse("http://mail.google.com/"); |
EXPECT_EQ(GURL(), fetched_google_url()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -574,7 +578,7 @@ |
MockSearchDomainCheckResponse("http://www.google.com/search"); |
EXPECT_EQ(GURL(), fetched_google_url()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -584,7 +588,7 @@ |
MockSearchDomainCheckResponse("http://www.google.com/?q=foo"); |
EXPECT_EQ(GURL(), fetched_google_url()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -594,7 +598,7 @@ |
MockSearchDomainCheckResponse("http://www.google.com/#anchor"); |
EXPECT_EQ(GURL(), fetched_google_url()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -604,7 +608,7 @@ |
MockSearchDomainCheckResponse("HJ)*qF)_*&@f1"); |
EXPECT_EQ(GURL(), fetched_google_url()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -619,7 +623,7 @@ |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, SilentlyAcceptSchemeChange) { |
@@ -633,14 +637,14 @@ |
EXPECT_EQ(GURL("https://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); |
EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_TRUE(observer_notified()); |
+ EXPECT_TRUE(listener_notified()); |
NotifyIPAddressChanged(); |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_TRUE(observer_notified()); |
+ EXPECT_TRUE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, RefetchOnIPAddressChange) { |
@@ -649,15 +653,15 @@ |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
- EXPECT_TRUE(observer_notified()); |
- clear_observer_notified(); |
+ EXPECT_TRUE(listener_notified()); |
+ clear_listener_notified(); |
NotifyIPAddressChanged(); |
MockSearchDomainCheckResponse("http://www.google.co.in/"); |
EXPECT_EQ(GURL("http://www.google.co.in/"), fetched_google_url()); |
// Just fetching a new URL shouldn't reset things without a prompt. |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) { |
@@ -667,7 +671,7 @@ |
EXPECT_FALSE(GetFetcher()); |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
ExpectDefaultURLs(); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) { |
@@ -681,7 +685,7 @@ |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
- EXPECT_TRUE(observer_notified()); |
+ EXPECT_TRUE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) { |
@@ -695,8 +699,8 @@ |
MockSearchDomainCheckResponse("http://www.google.co.uk/"); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
- EXPECT_TRUE(observer_notified()); |
- clear_observer_notified(); |
+ EXPECT_TRUE(listener_notified()); |
+ clear_listener_notified(); |
RequestServerCheck(); |
// The second request should be ignored. |
@@ -704,7 +708,7 @@ |
MockSearchDomainCheckResponse("http://www.google.co.in/"); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, SearchingDoesNothingIfNoNeedToPrompt) { |
@@ -714,8 +718,8 @@ |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_TRUE(observer_notified()); |
- clear_observer_notified(); |
+ EXPECT_TRUE(listener_notified()); |
+ clear_listener_notified(); |
SetNavigationPending(1, true); |
CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); |
@@ -723,7 +727,7 @@ |
EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, TabClosedOnPendingSearch) { |
@@ -734,7 +738,7 @@ |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.jp/"), fetched_google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
SetNavigationPending(1, true); |
GoogleURLTrackerMapEntry* map_entry = GetMapEntry(1); |
@@ -742,13 +746,13 @@ |
EXPECT_FALSE(map_entry->has_infobar_delegate()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
CloseTab(1); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, TabClosedOnCommittedSearch) { |
@@ -765,7 +769,7 @@ |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, InfoBarClosed) { |
@@ -783,7 +787,7 @@ |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, InfoBarRefused) { |
@@ -801,7 +805,7 @@ |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, InfoBarAccepted) { |
@@ -819,7 +823,7 @@ |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL()); |
- EXPECT_TRUE(observer_notified()); |
+ EXPECT_TRUE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, FetchesCanAutomaticallyCloseInfoBars) { |
@@ -942,7 +946,7 @@ |
EXPECT_TRUE(map_entry->has_infobar_delegate()); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); |
} |
@@ -1014,7 +1018,7 @@ |
ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); |
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, MultipleMapEntries) { |
@@ -1052,7 +1056,7 @@ |
delegate2->Close(false); |
EXPECT_TRUE(GetMapEntry(2) == NULL); |
- EXPECT_FALSE(observer_notified()); |
+ EXPECT_FALSE(listener_notified()); |
delegate4->Accept(); |
EXPECT_TRUE(GetMapEntry(1) == NULL); |
@@ -1060,7 +1064,7 @@ |
EXPECT_TRUE(GetMapEntry(4) == NULL); |
EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url()); |
EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL()); |
- EXPECT_TRUE(observer_notified()); |
+ EXPECT_TRUE(listener_notified()); |
} |
TEST_F(GoogleURLTrackerTest, IgnoreIrrelevantNavigation) { |