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

Unified Diff: chrome/browser/google/google_url_tracker_unittest.cc

Issue 4880003: Fix a number of problems with the GoogleURLTracker (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 1 month 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_unittest.cc
===================================================================
--- chrome/browser/google/google_url_tracker_unittest.cc (revision 65992)
+++ chrome/browser/google/google_url_tracker_unittest.cc (working copy)
@@ -8,7 +8,6 @@
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/common/net/url_fetcher.h"
-#include "chrome/common/net/url_request_context_getter.h"
#include "chrome/common/net/test_url_fetcher_factory.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/pref_names.h"
@@ -53,42 +52,60 @@
// TestInfoBarDelegate --------------------------------------------------------
-class TestInfoBarDelegate : public InfoBarDelegate {
+class TestInfoBarDelegate : public GoogleURLTrackerInfoBarDelegate {
public:
- TestInfoBarDelegate(GoogleURLTracker* google_url_tracker,
+ TestInfoBarDelegate(TabContents* tab_contents,
+ const GURL& search_url,
+ GoogleURLTracker* google_url_tracker,
const GURL& new_google_url);
- virtual ~TestInfoBarDelegate();
- // InfoBarDelegate
- virtual InfoBar* CreateInfoBar();
+ // GoogleURLTrackerInfoBarDelegate
+ virtual bool Accept(); // Overridden to avoid dereferencing |tab_contents_|.
+ virtual void Show();
+ virtual void Close(bool redo_search);
- GoogleURLTracker* google_url_tracker() const { return google_url_tracker_; }
+ GURL search_url() const { return search_url_; }
GURL new_google_url() const { return new_google_url_; }
+ bool showing() const { return showing_; }
private:
- GoogleURLTracker* google_url_tracker_;
- GURL new_google_url_;
+ virtual ~TestInfoBarDelegate();
};
-TestInfoBarDelegate::TestInfoBarDelegate(GoogleURLTracker* google_url_tracker,
+TestInfoBarDelegate::TestInfoBarDelegate(TabContents* tab_contents,
+ const GURL& search_url,
+ GoogleURLTracker* google_url_tracker,
const GURL& new_google_url)
- : InfoBarDelegate(NULL),
- google_url_tracker_(google_url_tracker),
- new_google_url_(new_google_url) {
+ : GoogleURLTrackerInfoBarDelegate(NULL, search_url, google_url_tracker,
+ new_google_url) {
+ // We set |tab_contents_| here instead of in the superclass constructor so
+ // that the base class will not try to dereference the bogus |tab_contents|.
+ tab_contents_ = tab_contents;
}
-TestInfoBarDelegate::~TestInfoBarDelegate() {
+bool TestInfoBarDelegate::Accept() {
+ google_url_tracker_->AcceptGoogleURL(new_google_url_);
+ return false;
}
-InfoBar* TestInfoBarDelegate::CreateInfoBar() {
- return NULL;
+void TestInfoBarDelegate::Show() {
+ showing_ = true;
}
-InfoBarDelegate* CreateTestInfobar(
+void TestInfoBarDelegate::Close(bool redo_search) {
+ InfoBarClosed();
+}
+
+TestInfoBarDelegate::~TestInfoBarDelegate() {
+}
+
+GoogleURLTrackerInfoBarDelegate* CreateTestInfobar(
TabContents* tab_contents,
+ const GURL& search_url,
GoogleURLTracker* google_url_tracker,
const GURL& new_google_url) {
- return new TestInfoBarDelegate(google_url_tracker, new_google_url);
+ return new TestInfoBarDelegate(tab_contents, search_url, google_url_tracker,
+ new_google_url);
}
} // namespace
@@ -105,10 +122,8 @@
virtual void SetUp();
virtual void TearDown();
- void CreateRequestContext();
- TestURLFetcher* GetFetcherByID(int expected_id);
- void MockSearchDomainCheckResponse(int expected_id,
- const std::string& domain);
+ TestURLFetcher* GetFetcher();
+ void MockSearchDomainCheckResponse(const std::string& domain);
void RequestServerCheck();
void FinishSleep();
void NotifyIPAddressChanged();
@@ -116,13 +131,10 @@
void SetGoogleURL(const GURL& url);
void SetLastPromptedGoogleURL(const GURL& url);
GURL GetLastPromptedGoogleURL();
- void SearchCommitted(const GURL& search_url);
- void NavEntryCommitted();
- bool InfoBarIsShown();
- GURL GetInfoBarShowingURL();
- void AcceptGoogleURL();
- void CancelGoogleURL();
- void InfoBarClosed();
+ void SetSearchPending(const GURL& search_url, int unique_id);
+ void CommitSearch(int unique_id);
+ void CloseTab(int unique_id);
+ TestInfoBarDelegate* GetInfoBar(int unique_id);
void ExpectDefaultURLs();
scoped_ptr<TestNotificationObserver> observer_;
@@ -135,23 +147,18 @@
TestURLFetcherFactory fetcher_factory_;
NotificationRegistrar registrar_;
-
- URLRequestContextGetter* original_default_request_context_;
};
GoogleURLTrackerTest::GoogleURLTrackerTest()
: observer_(new TestNotificationObserver),
message_loop_(NULL),
- io_thread_(NULL),
- original_default_request_context_(NULL) {
+ io_thread_(NULL) {
}
GoogleURLTrackerTest::~GoogleURLTrackerTest() {
}
void GoogleURLTrackerTest::SetUp() {
- original_default_request_context_ = Profile::GetDefaultRequestContext();
- Profile::set_default_request_context(NULL);
message_loop_ = new MessageLoop(MessageLoop::TYPE_IO);
io_thread_ = new BrowserThread(BrowserThread::IO, message_loop_);
network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
@@ -164,6 +171,8 @@
tracker->queue_wakeup_task_ = false;
MessageLoop::current()->RunAllPending();
testing_browser_process->SetGoogleURLTracker(tracker);
+ testing_profile_->CreateRequestContext();
+ Profile::set_default_request_context(testing_profile_->GetRequestContext());
URLFetcher::set_factory(&fetcher_factory_);
g_browser_process->google_url_tracker()->infobar_creator_ =
@@ -180,28 +189,21 @@
network_change_notifier_.reset();
delete io_thread_;
delete message_loop_;
- Profile::set_default_request_context(original_default_request_context_);
- original_default_request_context_ = NULL;
}
-void GoogleURLTrackerTest::CreateRequestContext() {
- testing_profile_->CreateRequestContext();
- Profile::set_default_request_context(testing_profile_->GetRequestContext());
- NotificationService::current()->Notify(
- NotificationType::DEFAULT_REQUEST_CONTEXT_AVAILABLE,
- NotificationService::AllSources(), NotificationService::NoDetails());
+TestURLFetcher* GoogleURLTrackerTest::GetFetcher() {
+ // This will return the last fetcher created. If no fetchers have been
+ // created, we'll pass GetFetcherByID() "-1", and it will return NULL.
+ return fetcher_factory_.GetFetcherByID(
+ g_browser_process->google_url_tracker()->fetcher_id_ - 1);
}
-TestURLFetcher* GoogleURLTrackerTest::GetFetcherByID(int expected_id) {
- return fetcher_factory_.GetFetcherByID(expected_id);
-}
-
void GoogleURLTrackerTest::MockSearchDomainCheckResponse(
- int expected_id,
const std::string& domain) {
- TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(expected_id);
+ TestURLFetcher* fetcher = GetFetcher();
if (!fetcher)
return;
+ fetcher_factory_.RemoveFetcherFromMap(fetcher->id());
fetcher->delegate()->OnURLFetchComplete(fetcher,
GURL(GoogleURLTracker::kSearchDomainCheckURL), URLRequestStatus(), 200,
ResponseCookies(), domain);
@@ -248,57 +250,67 @@
prefs::kLastPromptedGoogleURL));
}
-void GoogleURLTrackerTest::SearchCommitted(const GURL& search_url) {
+void GoogleURLTrackerTest::SetSearchPending(const GURL& search_url,
+ int unique_id) {
GoogleURLTracker* google_url_tracker =
g_browser_process->google_url_tracker();
google_url_tracker->SearchCommitted();
if (google_url_tracker->registrar_.IsRegistered(google_url_tracker,
NotificationType::NAV_ENTRY_PENDING,
- NotificationService::AllSources()))
- google_url_tracker->search_url_ = search_url;
+ NotificationService::AllSources())) {
+ google_url_tracker->OnNavigationPending(Source<NavigationController>(
+ reinterpret_cast<NavigationController*>(unique_id)),
+ reinterpret_cast<TabContents*>(unique_id), search_url);
+ }
}
-void GoogleURLTrackerTest::NavEntryCommitted() {
+void GoogleURLTrackerTest::CommitSearch(int unique_id) {
GoogleURLTracker* google_url_tracker =
g_browser_process->google_url_tracker();
- google_url_tracker->ShowGoogleURLInfoBarIfNecessary(NULL);
+ Source<NavigationController> source(
+ reinterpret_cast<NavigationController*>(unique_id));
+ if (google_url_tracker->registrar_.IsRegistered(google_url_tracker,
+ NotificationType::NAV_ENTRY_COMMITTED, source)) {
+ google_url_tracker->OnNavigationCommittedOrTabClosed(source,
+ reinterpret_cast<TabContents*>(unique_id),
+ NotificationType::NAV_ENTRY_COMMITTED);
+ }
}
-bool GoogleURLTrackerTest::InfoBarIsShown() {
- return (g_browser_process->google_url_tracker()->infobar_ != NULL);
+void GoogleURLTrackerTest::CloseTab(int unique_id) {
+ GoogleURLTracker* google_url_tracker =
+ g_browser_process->google_url_tracker();
+ Source<NavigationController> source(
+ reinterpret_cast<NavigationController*>(unique_id));
+ TabContents* tab_contents = reinterpret_cast<TabContents*>(unique_id);
+ if (google_url_tracker->registrar_.IsRegistered(google_url_tracker,
+ NotificationType::TAB_CLOSED, source)) {
+ google_url_tracker->OnNavigationCommittedOrTabClosed(source, tab_contents,
+ NotificationType::TAB_CLOSED);
+ } else {
+ // Normally, closing a tab with an infobar showing will close the infobar.
+ // Since we don't have real tabs and are just faking things with magic
+ // numbers, we have to manually close the infobar, if any.
+ GoogleURLTracker::Infobars::iterator i =
+ google_url_tracker->infobars_.find(tab_contents);
+ if (i != google_url_tracker->infobars_.end()) {
+ TestInfoBarDelegate* infobar =
+ static_cast<TestInfoBarDelegate*>(i->second);
+ DCHECK(infobar->showing());
+ infobar->InfoBarClosed();
+ }
+ }
}
-GURL GoogleURLTrackerTest::GetInfoBarShowingURL() {
- TestInfoBarDelegate* infobar = static_cast<TestInfoBarDelegate*>(
- g_browser_process->google_url_tracker()->infobar_);
- return infobar->new_google_url();
+TestInfoBarDelegate* GoogleURLTrackerTest::GetInfoBar(int unique_id) {
+ const GoogleURLTracker::Infobars& infobars =
+ g_browser_process->google_url_tracker()->infobars_;
+ GoogleURLTracker::Infobars::const_iterator i =
+ infobars.find(reinterpret_cast<TabContents*>(unique_id));
+ return (i == infobars.end()) ?
+ NULL : static_cast<TestInfoBarDelegate*>(i->second);
}
-void GoogleURLTrackerTest::AcceptGoogleURL() {
- TestInfoBarDelegate* infobar = static_cast<TestInfoBarDelegate*>(
- g_browser_process->google_url_tracker()->infobar_);
- ASSERT_TRUE(infobar);
- ASSERT_TRUE(infobar->google_url_tracker());
- infobar->google_url_tracker()->AcceptGoogleURL(infobar->new_google_url());
-}
-
-void GoogleURLTrackerTest::CancelGoogleURL() {
- TestInfoBarDelegate* infobar = static_cast<TestInfoBarDelegate*>(
- g_browser_process->google_url_tracker()->infobar_);
- ASSERT_TRUE(infobar);
- ASSERT_TRUE(infobar->google_url_tracker());
- infobar->google_url_tracker()->CancelGoogleURL(infobar->new_google_url());
-}
-
-void GoogleURLTrackerTest::InfoBarClosed() {
- TestInfoBarDelegate* infobar = static_cast<TestInfoBarDelegate*>(
- g_browser_process->google_url_tracker()->infobar_);
- ASSERT_TRUE(infobar);
- ASSERT_TRUE(infobar->google_url_tracker());
- infobar->google_url_tracker()->InfoBarClosed();
- delete infobar;
-}
-
void GoogleURLTrackerTest::ExpectDefaultURLs() {
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
GoogleURLTracker::GoogleURL());
@@ -309,24 +321,23 @@
// Tests ----------------------------------------------------------------------
TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) {
- CreateRequestContext();
ExpectDefaultURLs();
FinishSleep();
// No one called RequestServerCheck() so nothing should have happened.
- EXPECT_FALSE(GetFetcherByID(0));
+ EXPECT_FALSE(GetFetcher());
+ MockSearchDomainCheckResponse(".google.co.uk");
ExpectDefaultURLs();
EXPECT_FALSE(observer_->notified());
}
TEST_F(GoogleURLTrackerTest, UpdateOnFirstRun) {
- CreateRequestContext();
RequestServerCheck();
- EXPECT_FALSE(GetFetcherByID(0));
+ EXPECT_FALSE(GetFetcher());
ExpectDefaultURLs();
EXPECT_FALSE(observer_->notified());
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.uk");
+ MockSearchDomainCheckResponse(".google.co.uk");
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
// GoogleURL should be updated, becase there was no last prompted URL.
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
@@ -334,16 +345,15 @@
}
TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) {
- CreateRequestContext();
SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
RequestServerCheck();
- EXPECT_FALSE(GetFetcherByID(0));
+ EXPECT_FALSE(GetFetcher());
ExpectDefaultURLs();
EXPECT_FALSE(observer_->notified());
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.uk");
+ MockSearchDomainCheckResponse(".google.co.uk");
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
// GoogleURL should not be updated, because the fetched and prompted URLs
// match.
@@ -353,12 +363,11 @@
}
TEST_F(GoogleURLTrackerTest, UpdatePromptedURLOnReturnToPreviousLocation) {
- CreateRequestContext();
SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/"));
SetGoogleURL(GURL("http://www.google.co.uk/"));
RequestServerCheck();
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.uk");
+ MockSearchDomainCheckResponse(".google.co.uk");
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
@@ -366,17 +375,16 @@
}
TEST_F(GoogleURLTrackerTest, RefetchOnIPAddressChange) {
- CreateRequestContext();
RequestServerCheck();
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.uk");
+ MockSearchDomainCheckResponse(".google.co.uk");
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
EXPECT_TRUE(observer_->notified());
observer_->clear_notified();
NotifyIPAddressChanged();
- MockSearchDomainCheckResponse(1, ".google.co.in");
+ MockSearchDomainCheckResponse(".google.co.in");
EXPECT_EQ(GURL("http://www.google.co.in/"), GetFetchedGoogleURL());
// Just fetching a new URL shouldn't reset things without a prompt.
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
@@ -384,62 +392,136 @@
}
TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) {
- CreateRequestContext();
FinishSleep();
NotifyIPAddressChanged();
// No one called RequestServerCheck() so nothing should have happened.
- EXPECT_FALSE(GetFetcherByID(0));
+ EXPECT_FALSE(GetFetcher());
+ MockSearchDomainCheckResponse(".google.co.uk");
ExpectDefaultURLs();
EXPECT_FALSE(observer_->notified());
}
TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) {
- CreateRequestContext();
FinishSleep();
NotifyIPAddressChanged();
+ MockSearchDomainCheckResponse(".google.co.jp");
RequestServerCheck();
// The first request for a check should trigger a fetch if it hasn't happened
// already.
- MockSearchDomainCheckResponse(0, ".google.co.uk");
+ MockSearchDomainCheckResponse(".google.co.uk");
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
EXPECT_TRUE(observer_->notified());
}
+TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) {
+ FinishSleep();
+ NotifyIPAddressChanged();
+ MockSearchDomainCheckResponse(".google.co.jp");
+
+ RequestServerCheck();
+ // The first request for a check should trigger a fetch if it hasn't happened
+ // already.
+ MockSearchDomainCheckResponse(".google.co.uk");
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
+ EXPECT_TRUE(observer_->notified());
+ observer_->clear_notified();
+
+ RequestServerCheck();
+ // The second request should be ignored.
+ EXPECT_FALSE(GetFetcher());
+ MockSearchDomainCheckResponse(".google.co.in");
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
+ EXPECT_FALSE(observer_->notified());
+}
+
TEST_F(GoogleURLTrackerTest, SearchingDoesNothingIfNoNeedToPrompt) {
- CreateRequestContext();
RequestServerCheck();
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.uk");
+ MockSearchDomainCheckResponse(".google.co.uk");
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
EXPECT_TRUE(observer_->notified());
observer_->clear_notified();
- SearchCommitted(GURL("http://www.google.co.uk/search?q=test"));
- NavEntryCommitted();
- EXPECT_FALSE(InfoBarIsShown());
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ CommitSearch(1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_TRUE(infobar == NULL);
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetFetchedGoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GoogleURLTracker::GoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
EXPECT_FALSE(observer_->notified());
}
+TEST_F(GoogleURLTrackerTest, TabClosedOnPendingSearch) {
+ SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
+ RequestServerCheck();
+ FinishSleep();
+ MockSearchDomainCheckResponse(".google.co.jp");
+ EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
+ GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.jp/"), GetFetchedGoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
+ EXPECT_FALSE(observer_->notified());
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
+ EXPECT_FALSE(infobar->showing());
+ EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
+ GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test"),
+ infobar->search_url());
+ EXPECT_EQ(GURL("http://www.google.co.jp/"), infobar->new_google_url());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
+ EXPECT_FALSE(observer_->notified());
+
+ CloseTab(1);
+ EXPECT_TRUE(GetInfoBar(1) == NULL);
+ EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
+ GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
+ EXPECT_FALSE(observer_->notified());
+}
+
+TEST_F(GoogleURLTrackerTest, TabClosedOnCommittedSearch) {
+ SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
+ RequestServerCheck();
+ FinishSleep();
+ MockSearchDomainCheckResponse(".google.co.jp");
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ CommitSearch(1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
+ EXPECT_TRUE(infobar->showing());
+
+ CloseTab(1);
+ EXPECT_TRUE(GetInfoBar(1) == NULL);
+ EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
+ GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
+ EXPECT_FALSE(observer_->notified());
+}
+
TEST_F(GoogleURLTrackerTest, InfobarClosed) {
- CreateRequestContext();
SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
RequestServerCheck();
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.jp");
+ MockSearchDomainCheckResponse(".google.co.jp");
- SearchCommitted(GURL("http://www.google.co.uk/search?q=test"));
- NavEntryCommitted();
- EXPECT_TRUE(InfoBarIsShown());
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ CommitSearch(1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
- InfoBarClosed();
- EXPECT_FALSE(InfoBarIsShown());
+ infobar->InfoBarClosed();
+ EXPECT_TRUE(GetInfoBar(1) == NULL);
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
GoogleURLTracker::GoogleURL());
EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
@@ -447,19 +529,18 @@
}
TEST_F(GoogleURLTrackerTest, InfobarRefused) {
- CreateRequestContext();
SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
RequestServerCheck();
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.jp");
+ MockSearchDomainCheckResponse(".google.co.jp");
- SearchCommitted(GURL("http://www.google.co.uk/search?q=test"));
- NavEntryCommitted();
- EXPECT_TRUE(InfoBarIsShown());
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ CommitSearch(1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
- CancelGoogleURL();
- InfoBarClosed();
- EXPECT_FALSE(InfoBarIsShown());
+ infobar->Cancel();
+ EXPECT_TRUE(GetInfoBar(1) == NULL);
EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
GoogleURLTracker::GoogleURL());
EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
@@ -467,20 +548,128 @@
}
TEST_F(GoogleURLTrackerTest, InfobarAccepted) {
- CreateRequestContext();
SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
RequestServerCheck();
FinishSleep();
- MockSearchDomainCheckResponse(0, ".google.co.jp");
+ MockSearchDomainCheckResponse(".google.co.jp");
- SearchCommitted(GURL("http://www.google.co.uk/search?q=test"));
- NavEntryCommitted();
- EXPECT_TRUE(InfoBarIsShown());
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ CommitSearch(1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
- AcceptGoogleURL();
- InfoBarClosed();
- EXPECT_FALSE(InfoBarIsShown());
+ infobar->Accept();
+ EXPECT_TRUE(GetInfoBar(1) == NULL);
EXPECT_EQ(GURL("http://www.google.co.jp/"), GoogleURLTracker::GoogleURL());
EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
EXPECT_TRUE(observer_->notified());
}
+
+TEST_F(GoogleURLTrackerTest, InfobarShownAgainOnSearchAfterPendingSearch) {
+ SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
+ RequestServerCheck();
+ FinishSleep();
+ MockSearchDomainCheckResponse(".google.co.jp");
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
+ EXPECT_FALSE(infobar->showing());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test"),
+ infobar->search_url());
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test2"), 1);
+ TestInfoBarDelegate* infobar2 = GetInfoBar(1);
+ ASSERT_FALSE(infobar2 == NULL);
+ EXPECT_FALSE(infobar2->showing());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"),
+ infobar2->search_url());
+
+ CommitSearch(1);
+ EXPECT_TRUE(infobar2->showing());
+ EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
+ GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
+ EXPECT_FALSE(observer_->notified());
+
+ CloseTab(1);
+}
+
+TEST_F(GoogleURLTrackerTest, InfobarShownAgainOnSearchAfterCommittedSearch) {
+ SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
+ RequestServerCheck();
+ FinishSleep();
+ MockSearchDomainCheckResponse(".google.co.jp");
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ CommitSearch(1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
+ EXPECT_TRUE(infobar->showing());
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test2"), 1);
+ TestInfoBarDelegate* infobar2 = GetInfoBar(1);
+ ASSERT_FALSE(infobar2 == NULL);
+ EXPECT_FALSE(infobar2->showing());
+
+ CommitSearch(1);
+ EXPECT_TRUE(infobar2->showing());
+ EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage),
+ GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
+ EXPECT_FALSE(observer_->notified());
+
+ CloseTab(1);
+}
+
+TEST_F(GoogleURLTrackerTest, MultipleInfobars) {
+ SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
+ RequestServerCheck();
+ FinishSleep();
+ MockSearchDomainCheckResponse(".google.co.jp");
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
+ TestInfoBarDelegate* infobar = GetInfoBar(1);
+ ASSERT_FALSE(infobar == NULL);
+ EXPECT_FALSE(infobar->showing());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test"),
+ infobar->search_url());
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test2"), 2);
+ CommitSearch(2);
+ TestInfoBarDelegate* infobar2 = GetInfoBar(2);
+ ASSERT_FALSE(infobar2 == NULL);
+ EXPECT_TRUE(infobar2->showing());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"),
+ infobar2->search_url());
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test3"), 3);
+ TestInfoBarDelegate* infobar3 = GetInfoBar(3);
+ ASSERT_FALSE(infobar3 == NULL);
+ EXPECT_FALSE(infobar3->showing());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test3"),
+ infobar3->search_url());
+
+ SetSearchPending(GURL("http://www.google.co.uk/search?q=test4"), 4);
+ CommitSearch(4);
+ TestInfoBarDelegate* infobar4 = GetInfoBar(4);
+ ASSERT_FALSE(infobar4 == NULL);
+ EXPECT_TRUE(infobar4->showing());
+ EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test4"),
+ infobar4->search_url());
+
+ CommitSearch(1);
+ EXPECT_TRUE(infobar->showing());
+
+ infobar2->InfoBarClosed();
+ EXPECT_TRUE(GetInfoBar(2) == NULL);
+ EXPECT_FALSE(observer_->notified());
+
+ infobar4->Accept();
+ EXPECT_TRUE(GetInfoBar(1) == NULL);
+ EXPECT_TRUE(GetInfoBar(3) == NULL);
+ EXPECT_TRUE(GetInfoBar(4) == NULL);
+ EXPECT_EQ(GURL("http://www.google.co.jp/"), GoogleURLTracker::GoogleURL());
+ EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
+ EXPECT_TRUE(observer_->notified());
+}
« chrome/browser/google/google_url_tracker.cc ('K') | « chrome/browser/google/google_url_tracker.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698