| 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
|
| deleted file mode 100644
|
| index 25bfaf4d51da80a8f150ef0ff233d9a4056dbcee..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/google/google_url_tracker_unittest.cc
|
| +++ /dev/null
|
| @@ -1,1049 +0,0 @@
|
| -// Copyright 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/google/core/browser/google_url_tracker.h"
|
| -
|
| -#include <set>
|
| -#include <string>
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/prefs/pref_service.h"
|
| -#include "chrome/browser/google/google_url_tracker_factory.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "components/google/core/browser/google_pref_names.h"
|
| -#include "components/google/core/browser/google_url_tracker_client.h"
|
| -#include "components/google/core/browser/google_url_tracker_infobar_delegate.h"
|
| -#include "components/google/core/browser/google_url_tracker_navigation_helper.h"
|
| -#include "components/infobars/core/infobar.h"
|
| -#include "components/infobars/core/infobar_delegate.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| -#include "net/url_request/test_url_fetcher_factory.h"
|
| -#include "net/url_request/url_fetcher.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -// TestCallbackListener ---------------------------------------------------
|
| -
|
| -class TestCallbackListener {
|
| - public:
|
| - TestCallbackListener();
|
| - virtual ~TestCallbackListener();
|
| -
|
| - bool HasRegisteredCallback();
|
| - void RegisterCallback(GoogleURLTracker* google_url_tracker);
|
| -
|
| - bool notified() const { return notified_; }
|
| - void clear_notified() { notified_ = false; }
|
| -
|
| - private:
|
| - void OnGoogleURLUpdated();
|
| -
|
| - bool notified_;
|
| - scoped_ptr<GoogleURLTracker::Subscription> google_url_updated_subscription_;
|
| -};
|
| -
|
| -TestCallbackListener::TestCallbackListener() : notified_(false) {
|
| -}
|
| -
|
| -TestCallbackListener::~TestCallbackListener() {
|
| -}
|
| -
|
| -void TestCallbackListener::OnGoogleURLUpdated() {
|
| - 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)));
|
| -}
|
| -
|
| -
|
| -// TestGoogleURLTrackerClient -------------------------------------------------
|
| -
|
| -class TestGoogleURLTrackerClient : public GoogleURLTrackerClient {
|
| - public:
|
| - explicit TestGoogleURLTrackerClient(Profile* profile_);
|
| - virtual ~TestGoogleURLTrackerClient();
|
| -
|
| - virtual void SetListeningForNavigationStart(bool listen) OVERRIDE;
|
| - virtual bool IsListeningForNavigationStart() OVERRIDE;
|
| - virtual bool IsBackgroundNetworkingEnabled() OVERRIDE;
|
| - virtual PrefService* GetPrefs() OVERRIDE;
|
| - virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE;
|
| -
|
| - private:
|
| - Profile* profile_;
|
| - bool observe_nav_start_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestGoogleURLTrackerClient);
|
| -};
|
| -
|
| -TestGoogleURLTrackerClient::TestGoogleURLTrackerClient(Profile* profile)
|
| - : profile_(profile),
|
| - observe_nav_start_(false) {
|
| -}
|
| -
|
| -TestGoogleURLTrackerClient::~TestGoogleURLTrackerClient() {
|
| -}
|
| -
|
| -void TestGoogleURLTrackerClient::SetListeningForNavigationStart(bool listen) {
|
| - observe_nav_start_ = listen;
|
| -}
|
| -
|
| -bool TestGoogleURLTrackerClient::IsListeningForNavigationStart() {
|
| - return observe_nav_start_;
|
| -}
|
| -
|
| -bool TestGoogleURLTrackerClient::IsBackgroundNetworkingEnabled() {
|
| - return true;
|
| -}
|
| -
|
| -PrefService* TestGoogleURLTrackerClient::GetPrefs() {
|
| - return profile_->GetPrefs();
|
| -}
|
| -
|
| -net::URLRequestContextGetter* TestGoogleURLTrackerClient::GetRequestContext() {
|
| - return profile_->GetRequestContext();
|
| -}
|
| -
|
| -
|
| -// TestGoogleURLTrackerNavigationHelper ---------------------------------------
|
| -
|
| -class TestGoogleURLTrackerNavigationHelper
|
| - : public GoogleURLTrackerNavigationHelper {
|
| - public:
|
| - explicit TestGoogleURLTrackerNavigationHelper(GoogleURLTracker* tracker);
|
| - virtual ~TestGoogleURLTrackerNavigationHelper();
|
| -
|
| - virtual void SetListeningForNavigationCommit(bool listen) OVERRIDE;
|
| - virtual bool IsListeningForNavigationCommit() OVERRIDE;
|
| - virtual void SetListeningForTabDestruction(bool listen) OVERRIDE;
|
| - virtual bool IsListeningForTabDestruction() OVERRIDE;
|
| - virtual void OpenURL(GURL url,
|
| - WindowOpenDisposition disposition,
|
| - bool user_clicked_on_link) OVERRIDE;
|
| -
|
| - private:
|
| - bool listening_for_nav_commit_;
|
| - bool listening_for_tab_destruction_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestGoogleURLTrackerNavigationHelper);
|
| -};
|
| -
|
| -TestGoogleURLTrackerNavigationHelper::TestGoogleURLTrackerNavigationHelper(
|
| - GoogleURLTracker* tracker)
|
| - : GoogleURLTrackerNavigationHelper(tracker),
|
| - listening_for_nav_commit_(false),
|
| - listening_for_tab_destruction_(false) {
|
| -}
|
| -
|
| -TestGoogleURLTrackerNavigationHelper::~TestGoogleURLTrackerNavigationHelper() {
|
| -}
|
| -
|
| -void TestGoogleURLTrackerNavigationHelper::SetListeningForNavigationCommit(
|
| - bool listen) {
|
| - listening_for_nav_commit_ = listen;
|
| -}
|
| -
|
| -bool TestGoogleURLTrackerNavigationHelper::IsListeningForNavigationCommit() {
|
| - return listening_for_nav_commit_;
|
| -}
|
| -
|
| -void TestGoogleURLTrackerNavigationHelper::SetListeningForTabDestruction(
|
| - bool listen) {
|
| - listening_for_tab_destruction_ = listen;
|
| -}
|
| -
|
| -bool TestGoogleURLTrackerNavigationHelper::IsListeningForTabDestruction() {
|
| - return listening_for_tab_destruction_;
|
| -}
|
| -
|
| -void TestGoogleURLTrackerNavigationHelper::OpenURL(
|
| - GURL url,
|
| - WindowOpenDisposition disposition,
|
| - bool user_clicked_on_link) {
|
| -}
|
| -
|
| -// TestInfoBarManager ---------------------------------------------------------
|
| -
|
| -class TestInfoBarManager : public infobars::InfoBarManager {
|
| - public:
|
| - explicit TestInfoBarManager(int unique_id);
|
| - virtual ~TestInfoBarManager();
|
| - virtual int GetActiveEntryID() OVERRIDE;
|
| -
|
| - private:
|
| - int unique_id_;
|
| - DISALLOW_COPY_AND_ASSIGN(TestInfoBarManager);
|
| -};
|
| -
|
| -TestInfoBarManager::TestInfoBarManager(int unique_id) : unique_id_(unique_id) {
|
| -}
|
| -
|
| -TestInfoBarManager::~TestInfoBarManager() {
|
| - ShutDown();
|
| -}
|
| -
|
| -int TestInfoBarManager::GetActiveEntryID() {
|
| - return unique_id_;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// GoogleURLTrackerTest -------------------------------------------------------
|
| -
|
| -class GoogleURLTrackerTest : public testing::Test {
|
| - protected:
|
| - GoogleURLTrackerTest();
|
| - virtual ~GoogleURLTrackerTest();
|
| -
|
| - // testing::Test
|
| - virtual void SetUp() OVERRIDE;
|
| - virtual void TearDown() OVERRIDE;
|
| -
|
| - net::TestURLFetcher* GetFetcher();
|
| - void MockSearchDomainCheckResponse(const std::string& domain);
|
| - void RequestServerCheck();
|
| - void FinishSleep();
|
| - void NotifyNetworkChanged();
|
| - GURL fetched_google_url() const {
|
| - return google_url_tracker_->fetched_google_url();
|
| - }
|
| - void set_google_url(const GURL& url) {
|
| - google_url_tracker_->google_url_ = url;
|
| - }
|
| - GURL google_url() const { return google_url_tracker_->google_url(); }
|
| - void SetLastPromptedGoogleURL(const GURL& url);
|
| - GURL GetLastPromptedGoogleURL();
|
| - void SetNavigationPending(infobars::InfoBarManager* infobar_manager,
|
| - bool is_search);
|
| - void CommitNonSearch(infobars::InfoBarManager* infobar_manager);
|
| - void CommitSearch(infobars::InfoBarManager* infobar_manager,
|
| - const GURL& search_url);
|
| - void CloseTab(infobars::InfoBarManager* infobar_manager);
|
| - GoogleURLTrackerMapEntry* GetMapEntry(
|
| - infobars::InfoBarManager* infobar_manager);
|
| - GoogleURLTrackerInfoBarDelegate* GetInfoBarDelegate(
|
| - infobars::InfoBarManager* infobar_manager);
|
| - GoogleURLTrackerNavigationHelper* GetNavigationHelper(
|
| - infobars::InfoBarManager* infobar_manager);
|
| - void ExpectDefaultURLs() const;
|
| - void ExpectListeningForCommit(infobars::InfoBarManager* infobar_manager,
|
| - bool listening);
|
| - bool listener_notified() const { return listener_.notified(); }
|
| - void clear_listener_notified() { listener_.clear_notified(); }
|
| -
|
| - private:
|
| - // These are required by the TestURLFetchers GoogleURLTracker will create (see
|
| - // test_url_fetcher_factory.h).
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| -
|
| - // Creating this allows us to call
|
| - // net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests().
|
| - scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_;
|
| - net::TestURLFetcherFactory fetcher_factory_;
|
| - GoogleURLTrackerClient* client_;
|
| - 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<infobars::InfoBarManager*> infobar_managers_seen_;
|
| -};
|
| -
|
| -GoogleURLTrackerTest::GoogleURLTrackerTest()
|
| - : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {
|
| - GoogleURLTrackerFactory::GetInstance()->
|
| - RegisterUserPrefsOnBrowserContextForTest(&profile_);
|
| -}
|
| -
|
| -GoogleURLTrackerTest::~GoogleURLTrackerTest() {
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::SetUp() {
|
| - network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
|
| - // Ownership is passed to google_url_tracker_, but a weak pointer is kept;
|
| - // this is safe since GoogleURLTracker keeps the client for its lifetime.
|
| - client_ = new TestGoogleURLTrackerClient(&profile_);
|
| - scoped_ptr<GoogleURLTrackerClient> client(client_);
|
| - google_url_tracker_.reset(new GoogleURLTracker(
|
| - client.Pass(), GoogleURLTracker::UNIT_TEST_MODE));
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::TearDown() {
|
| - while (!infobar_managers_seen_.empty())
|
| - CloseTab(*infobar_managers_seen_.begin());
|
| - google_url_tracker_->Shutdown();
|
| -}
|
| -
|
| -net::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(google_url_tracker_->fetcher_id_ - 1);
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::MockSearchDomainCheckResponse(
|
| - const std::string& domain) {
|
| - net::TestURLFetcher* fetcher = GetFetcher();
|
| - if (!fetcher)
|
| - return;
|
| - fetcher_factory_.RemoveFetcherFromMap(fetcher->id());
|
| - fetcher->set_url(GURL(GoogleURLTracker::kSearchDomainCheckURL));
|
| - fetcher->set_response_code(200);
|
| - fetcher->SetResponseString(domain);
|
| - fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| - // At this point, |fetcher| is deleted.
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::RequestServerCheck() {
|
| - if (!listener_.HasRegisteredCallback())
|
| - listener_.RegisterCallback(google_url_tracker_.get());
|
| - google_url_tracker_->SetNeedToFetch();
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::FinishSleep() {
|
| - google_url_tracker_->FinishSleep();
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::NotifyNetworkChanged() {
|
| - net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
|
| - net::NetworkChangeNotifier::CONNECTION_UNKNOWN);
|
| - // For thread safety, the NCN queues tasks to do the actual notifications, so
|
| - // we need to spin the message loop so the tracker will actually be notified.
|
| - base::MessageLoop::current()->RunUntilIdle();
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::SetLastPromptedGoogleURL(const GURL& url) {
|
| - profile_.GetPrefs()->SetString(prefs::kLastPromptedGoogleURL, url.spec());
|
| -}
|
| -
|
| -GURL GoogleURLTrackerTest::GetLastPromptedGoogleURL() {
|
| - return GURL(profile_.GetPrefs()->GetString(prefs::kLastPromptedGoogleURL));
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::SetNavigationPending(
|
| - infobars::InfoBarManager* infobar_manager,
|
| - bool is_search) {
|
| - if (is_search) {
|
| - google_url_tracker_->SearchCommitted();
|
| - // Note that the call above might not have actually registered a listener
|
| - // for navigation starts if the searchdomaincheck response was bogus.
|
| - }
|
| - infobar_managers_seen_.insert(infobar_manager);
|
| - if (client_->IsListeningForNavigationStart()) {
|
| - google_url_tracker_->OnNavigationPending(
|
| - scoped_ptr<GoogleURLTrackerNavigationHelper>(
|
| - new TestGoogleURLTrackerNavigationHelper(
|
| - google_url_tracker_.get())),
|
| - infobar_manager,
|
| - infobar_manager->GetActiveEntryID());
|
| - }
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::CommitNonSearch(
|
| - infobars::InfoBarManager* infobar_manager) {
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(infobar_manager);
|
| - if (!map_entry)
|
| - return;
|
| -
|
| - ExpectListeningForCommit(infobar_manager, false);
|
| -
|
| - // The infobar should be showing; otherwise the pending non-search should
|
| - // have closed it.
|
| - ASSERT_TRUE(map_entry->has_infobar_delegate());
|
| -
|
| - // The pending_id should have been reset to 0 when the non-search became
|
| - // pending.
|
| - EXPECT_EQ(0, map_entry->infobar_delegate()->pending_id());
|
| -
|
| - // Committing the navigation would close the infobar.
|
| - map_entry->infobar_delegate()->Close(false);
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::CommitSearch(
|
| - infobars::InfoBarManager* infobar_manager,
|
| - const GURL& search_url) {
|
| - DCHECK(search_url.is_valid());
|
| - GoogleURLTrackerNavigationHelper* nav_helper =
|
| - GetNavigationHelper(infobar_manager);
|
| - if (nav_helper && nav_helper->IsListeningForNavigationCommit()) {
|
| - google_url_tracker_->OnNavigationCommitted(infobar_manager, search_url);
|
| - }
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::CloseTab(infobars::InfoBarManager* infobar_manager) {
|
| - infobar_managers_seen_.erase(infobar_manager);
|
| - GoogleURLTrackerNavigationHelper* nav_helper =
|
| - GetNavigationHelper(infobar_manager);
|
| - if (nav_helper && nav_helper->IsListeningForTabDestruction()) {
|
| - google_url_tracker_->OnTabClosed(nav_helper);
|
| - } else {
|
| - // Closing a tab with an infobar showing would close the infobar.
|
| - GoogleURLTrackerInfoBarDelegate* delegate =
|
| - GetInfoBarDelegate(infobar_manager);
|
| - if (delegate)
|
| - delegate->Close(false);
|
| - }
|
| -}
|
| -
|
| -GoogleURLTrackerMapEntry* GoogleURLTrackerTest::GetMapEntry(
|
| - infobars::InfoBarManager* infobar_manager) {
|
| - GoogleURLTracker::EntryMap::const_iterator i =
|
| - google_url_tracker_->entry_map_.find(infobar_manager);
|
| - return (i == google_url_tracker_->entry_map_.end()) ? NULL : i->second;
|
| -}
|
| -
|
| -GoogleURLTrackerInfoBarDelegate* GoogleURLTrackerTest::GetInfoBarDelegate(
|
| - infobars::InfoBarManager* infobar_manager) {
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(infobar_manager);
|
| - return map_entry ? map_entry->infobar_delegate() : NULL;
|
| -}
|
| -
|
| -GoogleURLTrackerNavigationHelper* GoogleURLTrackerTest::GetNavigationHelper(
|
| - infobars::InfoBarManager* infobar_manager) {
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(infobar_manager);
|
| - return map_entry ? map_entry->navigation_helper() : NULL;
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::ExpectDefaultURLs() const {
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_EQ(GURL(), fetched_google_url());
|
| -}
|
| -
|
| -void GoogleURLTrackerTest::ExpectListeningForCommit(
|
| - infobars::InfoBarManager* infobar_manager,
|
| - bool listening) {
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(infobar_manager);
|
| - if (map_entry) {
|
| - EXPECT_EQ(listening,
|
| - map_entry->navigation_helper()->IsListeningForNavigationCommit());
|
| - } else {
|
| - EXPECT_FALSE(listening);
|
| - }
|
| -}
|
| -
|
| -// Tests ----------------------------------------------------------------------
|
| -
|
| -TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) {
|
| - ExpectDefaultURLs();
|
| - FinishSleep();
|
| - // No one called RequestServerCheck() so nothing should have happened.
|
| - EXPECT_FALSE(GetFetcher());
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - ExpectDefaultURLs();
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, UpdateOnFirstRun) {
|
| - RequestServerCheck();
|
| - EXPECT_FALSE(GetFetcher());
|
| - ExpectDefaultURLs();
|
| - 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(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) {
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| -
|
| - RequestServerCheck();
|
| - EXPECT_FALSE(GetFetcher());
|
| - ExpectDefaultURLs();
|
| - EXPECT_FALSE(listener_notified());
|
| -
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
|
| - // GoogleURL should not be updated, because the fetched and prompted URLs
|
| - // match.
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, DontPromptOnBadReplies) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| -
|
| - RequestServerCheck();
|
| - EXPECT_FALSE(GetFetcher());
|
| - ExpectDefaultURLs();
|
| - 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(listener_notified());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // Bad subdomain.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://mail.google.com/");
|
| - EXPECT_EQ(GURL(), fetched_google_url());
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_FALSE(listener_notified());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // Non-empty path.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.com/search");
|
| - EXPECT_EQ(GURL(), fetched_google_url());
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_FALSE(listener_notified());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // Non-empty query.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.com/?q=foo");
|
| - EXPECT_EQ(GURL(), fetched_google_url());
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_FALSE(listener_notified());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // Non-empty ref.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.com/#anchor");
|
| - EXPECT_EQ(GURL(), fetched_google_url());
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_FALSE(listener_notified());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // Complete garbage.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("HJ)*qF)_*&@f1");
|
| - EXPECT_EQ(GURL(), fetched_google_url());
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_FALSE(listener_notified());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, UpdatePromptedURLOnReturnToPreviousLocation) {
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/"));
|
| - set_google_url(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - 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_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, SilentlyAcceptSchemeChange) {
|
| - // We should auto-accept changes to the current Google URL that merely change
|
| - // the scheme, regardless of what the last prompted URL was.
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/"));
|
| - set_google_url(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("https://www.google.co.uk/");
|
| - 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(listener_notified());
|
| -
|
| - NotifyNetworkChanged();
|
| - 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(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, RefetchOnNetworkChange) {
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - 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(listener_notified());
|
| - clear_listener_notified();
|
| -
|
| - NotifyNetworkChanged();
|
| - 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(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) {
|
| - FinishSleep();
|
| - NotifyNetworkChanged();
|
| - // No one called RequestServerCheck() so nothing should have happened.
|
| - EXPECT_FALSE(GetFetcher());
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - ExpectDefaultURLs();
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) {
|
| - FinishSleep();
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - RequestServerCheck();
|
| - // The first request for a check should trigger a fetch if it hasn't happened
|
| - // already.
|
| - 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(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) {
|
| - FinishSleep();
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - RequestServerCheck();
|
| - // The first request for a check should trigger a fetch if it hasn't happened
|
| - // already.
|
| - 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(listener_notified());
|
| - clear_listener_notified();
|
| -
|
| - RequestServerCheck();
|
| - // The second request should be ignored.
|
| - EXPECT_FALSE(GetFetcher());
|
| - 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(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, SearchingDoesNothingIfNoNeedToPrompt) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - 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(listener_notified());
|
| - clear_listener_notified();
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - 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(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, TabClosedOnPendingSearch) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - 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(listener_notified());
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(&infobar_manager);
|
| - ASSERT_FALSE(map_entry == NULL);
|
| - 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(listener_notified());
|
| -
|
| - CloseTab(&infobar_manager);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, TabClosedOnCommittedSearch) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| -
|
| - CloseTab(&infobar_manager);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, InfoBarClosed) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - GoogleURLTrackerInfoBarDelegate* infobar =
|
| - GetInfoBarDelegate(&infobar_manager);
|
| - ASSERT_FALSE(infobar == NULL);
|
| -
|
| - infobar->Close(false);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, InfoBarRefused) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - GoogleURLTrackerInfoBarDelegate* infobar =
|
| - GetInfoBarDelegate(&infobar_manager);
|
| - ASSERT_FALSE(infobar == NULL);
|
| -
|
| - infobar->Cancel();
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, InfoBarAccepted) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - GoogleURLTrackerInfoBarDelegate* infobar =
|
| - GetInfoBarDelegate(&infobar_manager);
|
| - ASSERT_FALSE(infobar == NULL);
|
| -
|
| - infobar->Accept();
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, FetchesCanAutomaticallyCloseInfoBars) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse(google_url().spec());
|
| -
|
| - // Re-fetching the accepted URL after showing an infobar for another URL
|
| - // should close the infobar.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.com/search?q=test"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse(google_url().spec());
|
| - EXPECT_EQ(google_url(), GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // As should fetching a URL that differs from the accepted only by the scheme.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.com/search?q=test"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| - NotifyNetworkChanged();
|
| - url::Replacements<char> replacements;
|
| - const std::string& scheme("https");
|
| - replacements.SetScheme(scheme.data(), url::Component(0, scheme.length()));
|
| - GURL new_google_url(google_url().ReplaceComponents(replacements));
|
| - MockSearchDomainCheckResponse(new_google_url.spec());
|
| - EXPECT_EQ(new_google_url, GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // As should re-fetching the last prompted URL.
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.com/search?q=test"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - EXPECT_EQ(new_google_url, google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // And one that differs from the last prompted URL only by the scheme.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.com/search?q=test"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("https://www.google.co.uk/");
|
| - EXPECT_EQ(new_google_url, google_url());
|
| - EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // And fetching a different URL entirely.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.com/search?q=test"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("https://www.google.co.in/");
|
| - EXPECT_EQ(new_google_url, google_url());
|
| - EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, ResetInfoBarGoogleURLs) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse(google_url().spec());
|
| -
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("http://www.google.co.uk/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.com/search?q=test"));
|
| - GoogleURLTrackerInfoBarDelegate* delegate =
|
| - GetInfoBarDelegate(&infobar_manager);
|
| - ASSERT_FALSE(delegate == NULL);
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_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 showing.
|
| - NotifyNetworkChanged();
|
| - MockSearchDomainCheckResponse("https://www.google.co.uk/");
|
| - EXPECT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(GURL("https://www.google.co.uk/"), fetched_google_url());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, NavigationsAfterPendingSearch) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - // A pending non-search after a pending search should delete the map entry.
|
| - SetNavigationPending(&infobar_manager, true);
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(&infobar_manager);
|
| - ASSERT_FALSE(map_entry == NULL);
|
| - EXPECT_FALSE(map_entry->has_infobar_delegate());
|
| - SetNavigationPending(&infobar_manager, false);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // A pending search after a pending search should leave the map entry alive.
|
| - SetNavigationPending(&infobar_manager, true);
|
| - map_entry = GetMapEntry(&infobar_manager);
|
| - ASSERT_FALSE(map_entry == NULL);
|
| - EXPECT_FALSE(map_entry->has_infobar_delegate());
|
| - SetNavigationPending(&infobar_manager, true);
|
| - ASSERT_EQ(map_entry, GetMapEntry(&infobar_manager));
|
| - EXPECT_FALSE(map_entry->has_infobar_delegate());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true));
|
| -
|
| - // Committing this search should show an infobar.
|
| - CommitSearch(&infobar_manager,
|
| - GURL("http://www.google.co.uk/search?q=test2"));
|
| - 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(listener_notified());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, NavigationsAfterCommittedSearch) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - GoogleURLTrackerInfoBarDelegate* delegate =
|
| - GetInfoBarDelegate(&infobar_manager);
|
| - ASSERT_FALSE(delegate == NULL);
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| -
|
| - // A pending non-search on a visible infobar should basically do nothing.
|
| - SetNavigationPending(&infobar_manager, false);
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(0, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| -
|
| - // As should another pending non-search after the first.
|
| - SetNavigationPending(&infobar_manager, false);
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(0, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| -
|
| - // 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(&infobar_manager));
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| -
|
| - // A pending search on a visible infobar should cause the infobar to listen
|
| - // for the search to commit.
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - delegate = GetInfoBarDelegate(&infobar_manager);
|
| - ASSERT_FALSE(delegate == NULL);
|
| - SetNavigationPending(&infobar_manager, true);
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(1, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true));
|
| -
|
| - // But a non-search after this should cancel that state.
|
| - SetNavigationPending(&infobar_manager, false);
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(0, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| -
|
| - // Another pending search after the non-search should put us back into
|
| - // "waiting for commit" mode.
|
| - SetNavigationPending(&infobar_manager, true);
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(1, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true));
|
| -
|
| - // A second pending search after the first should not really change anything.
|
| - SetNavigationPending(&infobar_manager, true);
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(1, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true));
|
| -
|
| - // Committing this search should change the visible infobar's search_url.
|
| - CommitSearch(&infobar_manager,
|
| - GURL("http://www.google.co.uk/search?q=test2"));
|
| - ASSERT_EQ(delegate, GetInfoBarDelegate(&infobar_manager));
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"),
|
| - delegate->search_url());
|
| - EXPECT_EQ(0, delegate->pending_id());
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| - EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
|
| - EXPECT_FALSE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, MultipleMapEntries) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - TestInfoBarManager infobar_manager2(2);
|
| - TestInfoBarManager infobar_manager3(3);
|
| - TestInfoBarManager infobar_manager4(4);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - SetNavigationPending(&infobar_manager, true);
|
| - GoogleURLTrackerMapEntry* map_entry = GetMapEntry(&infobar_manager);
|
| - ASSERT_FALSE(map_entry == NULL);
|
| - EXPECT_FALSE(map_entry->has_infobar_delegate());
|
| -
|
| - SetNavigationPending(&infobar_manager2, true);
|
| - CommitSearch(&infobar_manager2,
|
| - GURL("http://www.google.co.uk/search?q=test2"));
|
| - GoogleURLTrackerInfoBarDelegate* delegate2 =
|
| - GetInfoBarDelegate(&infobar_manager2);
|
| - ASSERT_FALSE(delegate2 == NULL);
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"),
|
| - delegate2->search_url());
|
| -
|
| - SetNavigationPending(&infobar_manager3, true);
|
| - GoogleURLTrackerMapEntry* map_entry3 = GetMapEntry(&infobar_manager3);
|
| - ASSERT_FALSE(map_entry3 == NULL);
|
| - EXPECT_FALSE(map_entry3->has_infobar_delegate());
|
| -
|
| - SetNavigationPending(&infobar_manager4, true);
|
| - CommitSearch(&infobar_manager4,
|
| - GURL("http://www.google.co.uk/search?q=test4"));
|
| - GoogleURLTrackerInfoBarDelegate* delegate4 =
|
| - GetInfoBarDelegate(&infobar_manager4);
|
| - ASSERT_FALSE(delegate4 == NULL);
|
| - EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test4"),
|
| - delegate4->search_url());
|
| -
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - EXPECT_TRUE(map_entry->has_infobar_delegate());
|
| -
|
| - delegate2->Close(false);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager2) == NULL);
|
| - EXPECT_FALSE(listener_notified());
|
| -
|
| - delegate4->Accept();
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager) == NULL);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager3) == NULL);
|
| - EXPECT_TRUE(GetMapEntry(&infobar_manager4) == NULL);
|
| - EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url());
|
| - EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
|
| - EXPECT_TRUE(listener_notified());
|
| -}
|
| -
|
| -TEST_F(GoogleURLTrackerTest, IgnoreIrrelevantNavigation) {
|
| - TestInfoBarManager infobar_manager(1);
|
| - TestInfoBarManager infobar_manager2(2);
|
| - SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
|
| - RequestServerCheck();
|
| - FinishSleep();
|
| - MockSearchDomainCheckResponse("http://www.google.co.jp/");
|
| -
|
| - // This tests a particularly gnarly sequence of events that used to cause us
|
| - // to erroneously listen for a non-search navigation to commit.
|
| - SetNavigationPending(&infobar_manager, true);
|
| - CommitSearch(&infobar_manager, GURL("http://www.google.co.uk/search?q=test"));
|
| - SetNavigationPending(&infobar_manager2, true);
|
| - CommitSearch(&infobar_manager2,
|
| - GURL("http://www.google.co.uk/search?q=test2"));
|
| - EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL);
|
| - GoogleURLTrackerInfoBarDelegate* delegate2 =
|
| - GetInfoBarDelegate(&infobar_manager2);
|
| - ASSERT_FALSE(delegate2 == NULL);
|
| - SetNavigationPending(&infobar_manager, true);
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true));
|
| - delegate2->Close(false);
|
| - SetNavigationPending(&infobar_manager, false);
|
| - ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false));
|
| -}
|
|
|