| Index: chrome/browser/google/google_url_tracker_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/google/google_url_tracker_unittest.cc (revision 145827)
|
| +++ chrome/browser/google/google_url_tracker_unittest.cc (working copy)
|
| @@ -60,34 +60,33 @@
|
| class TestInfoBarDelegate : public GoogleURLTrackerInfoBarDelegate {
|
| public:
|
| TestInfoBarDelegate(InfoBarTabHelper* infobar_helper,
|
| - const GURL& search_url,
|
| GoogleURLTracker* google_url_tracker,
|
| const GURL& new_google_url);
|
| virtual ~TestInfoBarDelegate();
|
|
|
| GURL search_url() const { return search_url_; }
|
| GURL new_google_url() const { return new_google_url_; }
|
| - bool showing() const { return showing_; }
|
| + int pending_id() const { return pending_id_; }
|
|
|
| private:
|
| // GoogleURLTrackerInfoBarDelegate:
|
| - virtual void Show() OVERRIDE;
|
| + virtual void Show(const GURL& search_url) OVERRIDE;
|
| virtual void Close(bool redo_search) OVERRIDE;
|
| };
|
|
|
| TestInfoBarDelegate::TestInfoBarDelegate(InfoBarTabHelper* infobar_helper,
|
| - const GURL& search_url,
|
| GoogleURLTracker* google_url_tracker,
|
| const GURL& new_google_url)
|
| - : GoogleURLTrackerInfoBarDelegate(NULL, search_url, google_url_tracker,
|
| - new_google_url) {
|
| + : GoogleURLTrackerInfoBarDelegate(NULL, google_url_tracker, new_google_url) {
|
| // We set |map_key_| here instead of in the superclass constructor so that the
|
| // InfoBarDelegate base class will not try to dereference it, which would fail
|
| // since this is really a magic number and not an actual pointer.
|
| map_key_ = infobar_helper;
|
| }
|
|
|
| -void TestInfoBarDelegate::Show() {
|
| +void TestInfoBarDelegate::Show(const GURL& search_url) {
|
| + search_url_ = search_url;
|
| + pending_id_ = 0;
|
| showing_ = true;
|
| }
|
|
|
| @@ -100,10 +99,9 @@
|
|
|
| GoogleURLTrackerInfoBarDelegate* CreateTestInfobar(
|
| InfoBarTabHelper* infobar_helper,
|
| - const GURL& search_url,
|
| GoogleURLTracker* google_url_tracker,
|
| const GURL& new_google_url) {
|
| - return new TestInfoBarDelegate(infobar_helper, search_url, google_url_tracker,
|
| + return new TestInfoBarDelegate(infobar_helper, google_url_tracker,
|
| new_google_url);
|
| }
|
|
|
| @@ -135,11 +133,14 @@
|
| GURL google_url() const { return google_url_tracker_->google_url_; }
|
| void SetLastPromptedGoogleURL(const GURL& url);
|
| GURL GetLastPromptedGoogleURL();
|
| - void SetSearchPending(const GURL& search_url, int unique_id);
|
| - void CommitSearch(int unique_id);
|
| + void SetNonSearchPending(int unique_id);
|
| + void SetSearchPending(int unique_id);
|
| + void CommitNonSearch(int unique_id);
|
| + void CommitSearch(const GURL& search_url, int unique_id);
|
| void CloseTab(int unique_id);
|
| TestInfoBarDelegate* GetInfoBar(int unique_id);
|
| - void ExpectDefaultURLs();
|
| + void ExpectDefaultURLs() const;
|
| + void ExpectListeningForCommit(int unique_id, bool listening) const;
|
|
|
| scoped_ptr<TestNotificationObserver> observer_;
|
|
|
| @@ -233,10 +234,8 @@
|
| return GURL(profile_.GetPrefs()->GetString(prefs::kLastPromptedGoogleURL));
|
| }
|
|
|
| -void GoogleURLTrackerTest::SetSearchPending(const GURL& search_url,
|
| - int unique_id) {
|
| +void GoogleURLTrackerTest::SetNonSearchPending(int unique_id) {
|
| unique_ids_seen_.insert(unique_id);
|
| - google_url_tracker_->SearchCommitted();
|
| if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(),
|
| content::NOTIFICATION_NAV_ENTRY_PENDING,
|
| content::NotificationService::AllBrowserContextsAndSources())) {
|
| @@ -244,33 +243,55 @@
|
| content::Source<content::NavigationController>(
|
| reinterpret_cast<content::NavigationController*>(unique_id)),
|
| content::Source<TabContents>(reinterpret_cast<TabContents*>(unique_id)),
|
| - reinterpret_cast<InfoBarTabHelper*>(unique_id), search_url);
|
| + reinterpret_cast<InfoBarTabHelper*>(unique_id), unique_id);
|
| }
|
| }
|
|
|
| -void GoogleURLTrackerTest::CommitSearch(int unique_id) {
|
| - content::Source<content::NavigationController> source(
|
| - reinterpret_cast<content::NavigationController*>(unique_id));
|
| +void GoogleURLTrackerTest::SetSearchPending(int unique_id) {
|
| + google_url_tracker_->SearchCommitted();
|
| + // Note that the call above might not have actually registered a listener for
|
| + // NOTIFICATION_NAV_ENTRY_PENDING if the searchdomaincheck response was bogus.
|
| + SetNonSearchPending(unique_id);
|
| +}
|
| +
|
| +void GoogleURLTrackerTest::CommitNonSearch(int unique_id) {
|
| + GoogleURLTracker::InfoBarMap::iterator i =
|
| + google_url_tracker_->infobar_map_.find(
|
| + reinterpret_cast<InfoBarTabHelper*>(unique_id));
|
| + if (i != google_url_tracker_->infobar_map_.end()) {
|
| + ExpectListeningForCommit(unique_id, false);
|
| + TestInfoBarDelegate* infobar =
|
| + static_cast<TestInfoBarDelegate*>(i->second.infobar);
|
| + // The infobar should be showing; otherwise the pending non-search should
|
| + // have closed it.
|
| + EXPECT_TRUE(infobar->showing());
|
| + // The pending_id should have been reset to 0 when the non-search became
|
| + // pending.
|
| + EXPECT_EQ(0, infobar->pending_id());
|
| + infobar->InfoBarClosed();
|
| + }
|
| +}
|
| +
|
| +void GoogleURLTrackerTest::CommitSearch(const GURL& search_url, int unique_id) {
|
| if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(),
|
| - content::NOTIFICATION_NAV_ENTRY_COMMITTED, source)) {
|
| - google_url_tracker_->OnNavigationCommittedOrTabClosed(source,
|
| - content::Source<TabContents>(reinterpret_cast<TabContents*>(unique_id)),
|
| - reinterpret_cast<InfoBarTabHelper*>(unique_id), true);
|
| + content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| + content::Source<content::NavigationController>(
|
| + reinterpret_cast<content::NavigationController*>(unique_id)))) {
|
| + google_url_tracker_->OnNavigationCommittedOrTabClosed(
|
| + reinterpret_cast<InfoBarTabHelper*>(unique_id),
|
| + search_url);
|
| }
|
| }
|
|
|
| void GoogleURLTrackerTest::CloseTab(int unique_id) {
|
| unique_ids_seen_.erase(unique_id);
|
| - content::Source<TabContents> source(
|
| - reinterpret_cast<TabContents*>(unique_id));
|
| InfoBarTabHelper* infobar_helper =
|
| reinterpret_cast<InfoBarTabHelper*>(unique_id);
|
| if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(),
|
| - chrome::NOTIFICATION_TAB_CONTENTS_DESTROYED, source)) {
|
| - google_url_tracker_->OnNavigationCommittedOrTabClosed(
|
| - content::Source<content::NavigationController>(
|
| - reinterpret_cast<content::NavigationController*>(unique_id)),
|
| - source, infobar_helper, false);
|
| + chrome::NOTIFICATION_TAB_CONTENTS_DESTROYED, content::Source<TabContents>(
|
| + reinterpret_cast<TabContents*>(unique_id)))) {
|
| + google_url_tracker_->OnNavigationCommittedOrTabClosed(infobar_helper,
|
| + GURL());
|
| } 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
|
| @@ -279,8 +300,8 @@
|
| google_url_tracker_->infobar_map_.find(infobar_helper);
|
| if (i != google_url_tracker_->infobar_map_.end()) {
|
| TestInfoBarDelegate* infobar =
|
| - static_cast<TestInfoBarDelegate*>(i->second);
|
| - DCHECK(infobar->showing());
|
| + static_cast<TestInfoBarDelegate*>(i->second.infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| infobar->InfoBarClosed();
|
| }
|
| }
|
| @@ -291,15 +312,26 @@
|
| google_url_tracker_->infobar_map_.find(
|
| reinterpret_cast<InfoBarTabHelper*>(unique_id));
|
| return (i == google_url_tracker_->infobar_map_.end()) ?
|
| - NULL : static_cast<TestInfoBarDelegate*>(i->second);
|
| + NULL : static_cast<TestInfoBarDelegate*>(i->second.infobar);
|
| }
|
|
|
| -void GoogleURLTrackerTest::ExpectDefaultURLs() {
|
| +void GoogleURLTrackerTest::ExpectDefaultURLs() const {
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| }
|
|
|
| +void GoogleURLTrackerTest::ExpectListeningForCommit(int unique_id,
|
| + bool listening) const {
|
| + GoogleURLTracker::InfoBarMap::iterator i =
|
| + google_url_tracker_->infobar_map_.find(
|
| + reinterpret_cast<InfoBarTabHelper*>(unique_id));
|
| + ASSERT_FALSE(i == google_url_tracker_->infobar_map_.end());
|
| + EXPECT_EQ(listening, google_url_tracker_->registrar_.IsRegistered(
|
| + google_url_tracker_.get(), content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| + i->second.navigation_controller_source));
|
| +}
|
|
|
| +
|
| // Tests ----------------------------------------------------------------------
|
|
|
| TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) {
|
| @@ -357,8 +389,8 @@
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_FALSE(observer_->notified());
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(GetInfoBar(1) == NULL);
|
|
|
| // Bad subdomain.
|
| @@ -367,8 +399,8 @@
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_FALSE(observer_->notified());
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(GetInfoBar(1) == NULL);
|
|
|
| // Non-empty path.
|
| @@ -377,8 +409,8 @@
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_FALSE(observer_->notified());
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(GetInfoBar(1) == NULL);
|
|
|
| // Non-empty query.
|
| @@ -387,8 +419,8 @@
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_FALSE(observer_->notified());
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(GetInfoBar(1) == NULL);
|
|
|
| // Non-empty ref.
|
| @@ -397,8 +429,8 @@
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_FALSE(observer_->notified());
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(GetInfoBar(1) == NULL);
|
|
|
| // Complete garbage.
|
| @@ -407,8 +439,8 @@
|
| EXPECT_EQ(GURL(), fetched_google_url());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_FALSE(observer_->notified());
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(GetInfoBar(1) == NULL);
|
| }
|
|
|
| @@ -519,8 +551,8 @@
|
| EXPECT_TRUE(observer_->notified());
|
| observer_->clear_notified();
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| EXPECT_TRUE(infobar == NULL);
|
| EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
|
| @@ -539,13 +571,11 @@
|
| EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| EXPECT_FALSE(observer_->notified());
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| + SetSearchPending(1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
| EXPECT_FALSE(infobar->showing());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - 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());
|
| @@ -563,8 +593,8 @@
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
| EXPECT_TRUE(infobar->showing());
|
| @@ -582,8 +612,8 @@
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
|
|
| @@ -600,8 +630,8 @@
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
|
|
| @@ -618,8 +648,8 @@
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
|
|
| @@ -639,8 +669,8 @@
|
| // should close the infobar.
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - SetSearchPending(GURL("http://www.google.com/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.com/search?q=test"), 1);
|
| EXPECT_FALSE(GetInfoBar(1) == NULL);
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse(google_url().spec());
|
| @@ -650,8 +680,8 @@
|
| // As should fetching a URL that differs from the accepted only by the scheme.
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - SetSearchPending(GURL("http://www.google.com/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.com/search?q=test"), 1);
|
| EXPECT_FALSE(GetInfoBar(1) == NULL);
|
| NotifyIPAddressChanged();
|
| url_canon::Replacements<char> replacements;
|
| @@ -667,8 +697,8 @@
|
| SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetSearchPending(GURL("http://www.google.com/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.com/search?q=test"), 1);
|
| EXPECT_FALSE(GetInfoBar(1) == NULL);
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| @@ -679,8 +709,8 @@
|
| // And one that differs from the last prompted URL only by the scheme.
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetSearchPending(GURL("http://www.google.com/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.com/search?q=test"), 1);
|
| EXPECT_FALSE(GetInfoBar(1) == NULL);
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("https://www.google.co.uk/");
|
| @@ -691,8 +721,8 @@
|
| // And fetching a different URL entirely.
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetSearchPending(GURL("http://www.google.com/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.com/search?q=test"), 1);
|
| EXPECT_FALSE(GetInfoBar(1) == NULL);
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("https://www.google.co.in/");
|
| @@ -708,74 +738,158 @@
|
|
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - SetSearchPending(GURL("http://www.google.com/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
| EXPECT_EQ(GURL("http://www.google.co.uk/"), infobar->new_google_url());
|
|
|
| - // If while an infobar is showing we fetch a new URL that differs from the
|
| - // infobar's only by scheme, the infobar should stay open but have its Google
|
| - // URL reset.
|
| + // If while an infobar is pending we fetch a new URL that differs from the
|
| + // infobar's only by scheme, the infobar should stay pending but have its
|
| + // Google URL reset.
|
| NotifyIPAddressChanged();
|
| MockSearchDomainCheckResponse("https://www.google.co.uk/");
|
| TestInfoBarDelegate* new_infobar = GetInfoBar(1);
|
| ASSERT_FALSE(new_infobar == NULL);
|
| EXPECT_EQ(infobar, new_infobar);
|
| EXPECT_EQ(GURL("https://www.google.co.uk/"), new_infobar->new_google_url());
|
| +
|
| + // Same with an infobar that is showing.
|
| + CommitSearch(GURL("http://www.google.com/search?q=test"), 1);
|
| + EXPECT_TRUE(infobar->showing());
|
| + NotifyIPAddressChanged();
|
| + MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_EQ(GURL("http://www.google.co.uk/"), infobar->new_google_url());
|
| + EXPECT_TRUE(infobar->showing());
|
| }
|
|
|
| -TEST_F(GoogleURLTrackerTest, InfobarShownAgainOnSearchAfterPendingSearch) {
|
| +TEST_F(GoogleURLTrackerTest, NavigationsAfterPendingSearch) {
|
| SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| RequestServerCheck();
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| + // A pending non-search after a pending search should close the infobar.
|
| + SetSearchPending(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());
|
| + SetNonSearchPending(1);
|
| + infobar = GetInfoBar(1);
|
| + EXPECT_TRUE(infobar == NULL);
|
|
|
| - 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());
|
| + // A pending search after a pending search should leave the infobar alive.
|
| + SetSearchPending(1);
|
| + infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(infobar == NULL);
|
| + EXPECT_FALSE(infobar->showing());
|
| + SetSearchPending(1);
|
| + TestInfoBarDelegate* new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_FALSE(infobar->showing());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
|
|
|
| - CommitSearch(1);
|
| - EXPECT_TRUE(infobar2->showing());
|
| + // Committing this search should show the infobar.
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test2"), 1);
|
| + EXPECT_TRUE(infobar->showing());
|
| EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| EXPECT_FALSE(observer_->notified());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
|
| }
|
|
|
| -TEST_F(GoogleURLTrackerTest, InfobarShownAgainOnSearchAfterCommittedSearch) {
|
| +TEST_F(GoogleURLTrackerTest, NavigationsAfterCommittedSearch) {
|
| SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| RequestServerCheck();
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| - CommitSearch(1);
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| TestInfoBarDelegate* infobar = GetInfoBar(1);
|
| ASSERT_FALSE(infobar == NULL);
|
| EXPECT_TRUE(infobar->showing());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
|
|
|
| - // In real usage, the upcoming pending navigation for "test2" would close
|
| - // |infobar|. Since we're not actually doing navigations, we need to clean it
|
| - // up manually to prevent leaks.
|
| - delete infobar;
|
| + // A pending non-search on a visible infobar should basically do nothing.
|
| + SetNonSearchPending(1);
|
| + TestInfoBarDelegate* new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(0, infobar->pending_id());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test2"), 1);
|
| - TestInfoBarDelegate* infobar2 = GetInfoBar(1);
|
| - ASSERT_FALSE(infobar2 == NULL);
|
| - EXPECT_FALSE(infobar2->showing());
|
| + // As should another pending non-search after the first.
|
| + SetNonSearchPending(1);
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(0, infobar->pending_id());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
|
|
|
| - CommitSearch(1);
|
| - EXPECT_TRUE(infobar2->showing());
|
| + // Committing this non-search should close the infobar. The control flow in
|
| + // these tests is not really comparable to in the real browser, but at least a
|
| + // few sanity-checks will be performed.
|
| + ASSERT_NO_FATAL_FAILURE(CommitNonSearch(1));
|
| + new_infobar = GetInfoBar(1);
|
| + EXPECT_TRUE(new_infobar == NULL);
|
| +
|
| + // A pending search on a visible infobar should cause the infobar to listen
|
| + // for the search to commit.
|
| + SetSearchPending(1);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| + infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(infobar == NULL);
|
| + EXPECT_TRUE(infobar->showing());
|
| + SetSearchPending(1);
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(1, infobar->pending_id());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
|
| +
|
| + // But a non-search after this should cancel that state.
|
| + SetNonSearchPending(1);
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(0, infobar->pending_id());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
|
| +
|
| + // Another pending search after the non-search should put us back into
|
| + // "waiting for commit" mode.
|
| + SetSearchPending(1);
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(1, infobar->pending_id());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
|
| +
|
| + // A second pending search after the first should not really change anything.
|
| + SetSearchPending(1);
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(1, infobar->pending_id());
|
| + ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
|
| +
|
| + // Committing this search should change the visible infobar's search_url.
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test2"), 1);
|
| + new_infobar = GetInfoBar(1);
|
| + ASSERT_FALSE(new_infobar == NULL);
|
| + EXPECT_EQ(infobar, new_infobar);
|
| + EXPECT_TRUE(infobar->showing());
|
| + EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"), infobar->search_url());
|
| + EXPECT_EQ(0, infobar->pending_id());
|
| + 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());
|
| @@ -787,37 +901,33 @@
|
| FinishSleep();
|
| MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
|
|
| - SetSearchPending(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| + SetSearchPending(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);
|
| + SetSearchPending(2);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test2"), 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);
|
| + SetSearchPending(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);
|
| + SetSearchPending(4);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test4"), 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);
|
| + CommitSearch(GURL("http://www.google.co.uk/search?q=test"), 1);
|
| EXPECT_TRUE(infobar->showing());
|
|
|
| infobar2->InfoBarClosed();
|
|
|