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

Side by Side Diff: chrome/browser/google/google_url_tracker_unittest.cc

Issue 11114009: Split the existing GoogleURLTrackerInfoBarDelegate into two classes (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/google/google_url_tracker_map_entry.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/google/google_url_tracker.h" 5 #include "chrome/browser/google/google_url_tracker.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 9
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "chrome/browser/api/infobars/infobar_delegate.h" 11 #include "chrome/browser/api/infobars/infobar_delegate.h"
12 #include "chrome/browser/google/google_url_tracker_factory.h" 12 #include "chrome/browser/google/google_url_tracker_factory.h"
13 #include "chrome/browser/google/google_url_tracker_infobar_delegate.h" 13 #include "chrome/browser/google/google_url_tracker_infobar_delegate.h"
14 #include "chrome/browser/infobars/infobar.h"
14 #include "chrome/browser/prefs/pref_service.h" 15 #include "chrome/browser/prefs/pref_service.h"
15 #include "chrome/common/chrome_notification_types.h" 16 #include "chrome/common/chrome_notification_types.h"
16 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
17 #include "chrome/test/base/testing_profile.h" 18 #include "chrome/test/base/testing_profile.h"
18 #include "content/public/browser/notification_service.h" 19 #include "content/public/browser/notification_service.h"
19 #include "content/public/test/test_browser_thread.h" 20 #include "content/public/test/test_browser_thread.h"
20 #include "net/url_request/test_url_fetcher_factory.h" 21 #include "net/url_request/test_url_fetcher_factory.h"
21 #include "net/url_request/url_fetcher.h" 22 #include "net/url_request/url_fetcher.h"
22 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
23 24
24 // TestNotificationObserver --------------------------------------------------- 25 class GoogleURLTrackerTest;
26
25 27
26 namespace { 28 namespace {
27 29
30 // TestInfoBarDelegate --------------------------------------------------------
31
32 class TestInfoBarDelegate : public GoogleURLTrackerInfoBarDelegate {
33 public:
34 TestInfoBarDelegate(GoogleURLTrackerTest* test_harness,
35 InfoBarTabHelper* infobar_helper,
36 GoogleURLTracker* google_url_tracker,
37 const GURL& search_url);
38 virtual ~TestInfoBarDelegate();
39
40 private:
41 // GoogleURLTrackerInfoBarDelegate:
42 virtual void Update(const GURL& search_url) OVERRIDE;
43 virtual void Close(bool redo_search) OVERRIDE;
44
45 GoogleURLTrackerTest* test_harness_;
46 InfoBarTabHelper* infobar_helper_;
47
48 DISALLOW_COPY_AND_ASSIGN(TestInfoBarDelegate);
49 };
50
51 // The member function definitions come after the declaration of
52 // GoogleURLTrackerTest, so they can call members on it.
53
54
55 // TestNotificationObserver ---------------------------------------------------
56
28 class TestNotificationObserver : public content::NotificationObserver { 57 class TestNotificationObserver : public content::NotificationObserver {
29 public: 58 public:
30 TestNotificationObserver(); 59 TestNotificationObserver();
31 virtual ~TestNotificationObserver(); 60 virtual ~TestNotificationObserver();
32 61
33 virtual void Observe(int type, 62 virtual void Observe(int type,
34 const content::NotificationSource& source, 63 const content::NotificationSource& source,
35 const content::NotificationDetails& details); 64 const content::NotificationDetails& details);
36 bool notified() const { return notified_; } 65 bool notified() const { return notified_; }
37 void clear_notified() { notified_ = false; } 66 void clear_notified() { notified_ = false; }
38 67
39 private: 68 private:
40 bool notified_; 69 bool notified_;
41 }; 70 };
42 71
43 TestNotificationObserver::TestNotificationObserver() : notified_(false) { 72 TestNotificationObserver::TestNotificationObserver() : notified_(false) {
44 } 73 }
45 74
46 TestNotificationObserver::~TestNotificationObserver() { 75 TestNotificationObserver::~TestNotificationObserver() {
47 } 76 }
48 77
49 void TestNotificationObserver::Observe( 78 void TestNotificationObserver::Observe(
50 int type, 79 int type,
51 const content::NotificationSource& source, 80 const content::NotificationSource& source,
52 const content::NotificationDetails& details) { 81 const content::NotificationDetails& details) {
53 notified_ = true; 82 notified_ = true;
54 } 83 }
55 84
56
57 // TestInfoBarDelegate --------------------------------------------------------
58
59 class TestInfoBarDelegate : public GoogleURLTrackerInfoBarDelegate {
60 public:
61 TestInfoBarDelegate(InfoBarTabHelper* infobar_helper,
62 GoogleURLTracker* google_url_tracker,
63 const GURL& new_google_url);
64 virtual ~TestInfoBarDelegate();
65
66 GURL search_url() const { return search_url_; }
67 GURL new_google_url() const { return new_google_url_; }
68 int pending_id() const { return pending_id_; }
69
70 private:
71 // GoogleURLTrackerInfoBarDelegate:
72 virtual void Show(const GURL& search_url) OVERRIDE;
73 virtual void Close(bool redo_search) OVERRIDE;
74 };
75
76 TestInfoBarDelegate::TestInfoBarDelegate(InfoBarTabHelper* infobar_helper,
77 GoogleURLTracker* google_url_tracker,
78 const GURL& new_google_url)
79 : GoogleURLTrackerInfoBarDelegate(NULL, google_url_tracker, new_google_url) {
80 // We set |map_key_| here instead of in the superclass constructor so that the
81 // InfoBarDelegate base class will not try to dereference it, which would fail
82 // since this is really a magic number and not an actual pointer.
83 map_key_ = infobar_helper;
84 }
85
86 void TestInfoBarDelegate::Show(const GURL& search_url) {
87 search_url_ = search_url;
88 pending_id_ = 0;
89 showing_ = true;
90 }
91
92 void TestInfoBarDelegate::Close(bool redo_search) {
93 InfoBarClosed();
94 }
95
96 TestInfoBarDelegate::~TestInfoBarDelegate() {
97 }
98
99 GoogleURLTrackerInfoBarDelegate* CreateTestInfobar(
100 InfoBarTabHelper* infobar_helper,
101 GoogleURLTracker* google_url_tracker,
102 const GURL& new_google_url) {
103 return new TestInfoBarDelegate(infobar_helper, google_url_tracker,
104 new_google_url);
105 }
106
107 } // namespace 85 } // namespace
108 86
109 87
110 // GoogleURLTrackerTest ------------------------------------------------------- 88 // GoogleURLTrackerTest -------------------------------------------------------
111 89
90 // Ths class exercises GoogleURLTracker. In order to avoid instantiating more
91 // of the Chrome infrastructure than necessary, the GoogleURLTracker functions
92 // are carefully written so that many of the functions which take WebContents*,
93 // NavigationController*, InfoBarTabHelper*, or objects containing such pointers
94 // (e.g. NotificationSource) do not actually dereference the objects, merely use
95 // them for comparisons and lookups, e.g. in an InfoBarMap. This then allows
96 // the test code here to not create any of these objects, and instead supply
97 // "pointers" that are actually reinterpret_cast<>()ed magic numbers. Then we
98 // write the necessary stubs/hooks, here and in TestInfoBarDelegate above, to
99 // make everything continue to work.
100 //
101 // Technically, the C++98 spec defines the result of casting
102 // T* -> intptr_t -> T* to be an identity, but intptr_t -> T* -> intptr_t (what
103 // we use here) is "implementation-defined". Since I've never seen a compiler
104 // break this, though, and the result would simply be a failing test rather than
105 // a bug in Chrome, we'll use it anyway.
112 class GoogleURLTrackerTest : public testing::Test { 106 class GoogleURLTrackerTest : public testing::Test {
107 public:
108 // Called by TestInfoBarDelegate::Close().
109 void OnInfoBarClosed(GoogleURLTrackerInfoBarDelegate* infobar,
110 InfoBarTabHelper* infobar_helper);
111
113 protected: 112 protected:
114 GoogleURLTrackerTest(); 113 GoogleURLTrackerTest();
115 virtual ~GoogleURLTrackerTest(); 114 virtual ~GoogleURLTrackerTest();
116 115
117 // testing::Test 116 // testing::Test
118 virtual void SetUp(); 117 virtual void SetUp() OVERRIDE;
119 virtual void TearDown(); 118 virtual void TearDown() OVERRIDE;
120 119
121 net::TestURLFetcher* GetFetcher(); 120 net::TestURLFetcher* GetFetcher();
122 void MockSearchDomainCheckResponse(const std::string& domain); 121 void MockSearchDomainCheckResponse(const std::string& domain);
123 void RequestServerCheck(); 122 void RequestServerCheck();
124 void FinishSleep(); 123 void FinishSleep();
125 void NotifyIPAddressChanged(); 124 void NotifyIPAddressChanged();
126 GURL fetched_google_url() const { 125 GURL fetched_google_url() const {
127 return google_url_tracker_->fetched_google_url_; 126 return google_url_tracker_->fetched_google_url();
128 } 127 }
129 void set_google_url(const GURL& url) { 128 void set_google_url(const GURL& url) {
130 google_url_tracker_->google_url_ = url; 129 google_url_tracker_->google_url_ = url;
131 } 130 }
132 GURL google_url() const { return google_url_tracker_->google_url_; } 131 GURL google_url() const { return google_url_tracker_->google_url(); }
133 void SetLastPromptedGoogleURL(const GURL& url); 132 void SetLastPromptedGoogleURL(const GURL& url);
134 GURL GetLastPromptedGoogleURL(); 133 GURL GetLastPromptedGoogleURL();
135 void SetNavigationPending(int unique_id, bool is_search); 134 void SetNavigationPending(intptr_t unique_id, bool is_search);
136 void CommitNonSearch(int unique_id); 135 void CommitNonSearch(intptr_t unique_id);
137 void CommitSearch(int unique_id, const GURL& search_url); 136 void CommitSearch(intptr_t unique_id, const GURL& search_url);
138 void DoInstantNavigation(int unique_id, const GURL& search_url); 137 void DoInstantNavigation(intptr_t unique_id, const GURL& search_url);
139 void CloseTab(int unique_id); 138 void CloseTab(intptr_t unique_id);
140 TestInfoBarDelegate* GetInfoBar(int unique_id); 139 GoogleURLTrackerMapEntry* GetMapEntry(intptr_t unique_id);
140 GoogleURLTrackerInfoBarDelegate* GetInfoBar(intptr_t unique_id);
141 void ExpectDefaultURLs() const; 141 void ExpectDefaultURLs() const;
142 void ExpectListeningForCommit(int unique_id, bool listening) const; 142 void ExpectListeningForCommit(intptr_t unique_id, bool listening);
143 143 bool observer_notified() const { return observer_.notified(); }
144 scoped_ptr<TestNotificationObserver> observer_; 144 void clear_observer_notified() { observer_.clear_notified(); }
145 145
146 private: 146 private:
147 // Since |infobar_helper| is really a magic number rather than an actual
148 // object, we don't add the created infobar to it. Instead we will simulate
149 // any helper<->infobar interaction necessary. The returned object will be
150 // cleaned up in CloseTab().
151 GoogleURLTrackerInfoBarDelegate* CreateTestInfoBar(
152 InfoBarTabHelper* infobar_helper,
153 GoogleURLTracker* google_url_tracker,
154 const GURL& search_url);
155
147 // These are required by the TestURLFetchers GoogleURLTracker will create (see 156 // These are required by the TestURLFetchers GoogleURLTracker will create (see
148 // test_url_fetcher_factory.h). 157 // test_url_fetcher_factory.h).
149 MessageLoop message_loop_; 158 MessageLoop message_loop_;
150 content::TestBrowserThread io_thread_; 159 content::TestBrowserThread io_thread_;
151 // Creating this allows us to call 160 // Creating this allows us to call
152 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). 161 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests().
153 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; 162 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_;
154 net::TestURLFetcherFactory fetcher_factory_; 163 net::TestURLFetcherFactory fetcher_factory_;
155 content::NotificationRegistrar registrar_; 164 content::NotificationRegistrar registrar_;
165 TestNotificationObserver observer_;
156 TestingProfile profile_; 166 TestingProfile profile_;
157 scoped_ptr<GoogleURLTracker> google_url_tracker_; 167 scoped_ptr<GoogleURLTracker> google_url_tracker_;
158 // This tracks the different "tabs" a test has "opened", so we can close them 168 // This tracks the different "tabs" a test has "opened", so we can close them
159 // properly before shutting down |google_url_tracker_|, which expects that. 169 // properly before shutting down |google_url_tracker_|, which expects that.
160 std::set<int> unique_ids_seen_; 170 std::set<int> unique_ids_seen_;
161 }; 171 };
162 172
173 void GoogleURLTrackerTest::OnInfoBarClosed(
174 GoogleURLTrackerInfoBarDelegate* infobar,
175 InfoBarTabHelper* infobar_helper) {
176 // First, simulate the InfoBarTabHelper firing INFOBAR_REMOVED.
177 InfoBarRemovedDetails removed_details(infobar, false);
178 GoogleURLTracker::InfoBarMap::const_iterator i =
179 google_url_tracker_->infobar_map_.find(infobar_helper);
180 ASSERT_FALSE(i == google_url_tracker_->infobar_map_.end());
181 GoogleURLTrackerMapEntry* map_entry = i->second;
182 ASSERT_EQ(infobar, map_entry->infobar());
183 map_entry->Observe(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
184 content::Source<InfoBarTabHelper>(infobar_helper),
185 content::Details<InfoBarRemovedDetails>(&removed_details));
186
187 // Second, simulate the infobar container closing the infobar in response.
188 infobar->InfoBarClosed();
189 }
190
163 GoogleURLTrackerTest::GoogleURLTrackerTest() 191 GoogleURLTrackerTest::GoogleURLTrackerTest()
164 : observer_(new TestNotificationObserver), 192 : message_loop_(MessageLoop::TYPE_IO),
165 message_loop_(MessageLoop::TYPE_IO),
166 io_thread_(content::BrowserThread::IO, &message_loop_) { 193 io_thread_(content::BrowserThread::IO, &message_loop_) {
167 GoogleURLTrackerFactory::GetInstance()->RegisterUserPrefsOnProfile(&profile_); 194 GoogleURLTrackerFactory::GetInstance()->RegisterUserPrefsOnProfile(&profile_);
168 } 195 }
169 196
170 GoogleURLTrackerTest::~GoogleURLTrackerTest() { 197 GoogleURLTrackerTest::~GoogleURLTrackerTest() {
171 } 198 }
172 199
173 void GoogleURLTrackerTest::SetUp() { 200 void GoogleURLTrackerTest::SetUp() {
174 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); 201 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
175 google_url_tracker_.reset( 202 google_url_tracker_.reset(
176 new GoogleURLTracker(&profile_, GoogleURLTracker::UNIT_TEST_MODE)); 203 new GoogleURLTracker(&profile_, GoogleURLTracker::UNIT_TEST_MODE));
177 google_url_tracker_->infobar_creator_ = &CreateTestInfobar; 204 google_url_tracker_->infobar_creator_ = base::Bind(
205 &GoogleURLTrackerTest::CreateTestInfoBar, base::Unretained(this));
178 } 206 }
179 207
180 void GoogleURLTrackerTest::TearDown() { 208 void GoogleURLTrackerTest::TearDown() {
181 while (!unique_ids_seen_.empty()) 209 while (!unique_ids_seen_.empty())
182 CloseTab(*unique_ids_seen_.begin()); 210 CloseTab(*unique_ids_seen_.begin());
183 211
184 google_url_tracker_.reset(); 212 google_url_tracker_.reset();
185 network_change_notifier_.reset(); 213 network_change_notifier_.reset();
186 } 214 }
187 215
(...skipping 10 matching lines...) Expand all
198 return; 226 return;
199 fetcher_factory_.RemoveFetcherFromMap(fetcher->id()); 227 fetcher_factory_.RemoveFetcherFromMap(fetcher->id());
200 fetcher->set_url(GURL(GoogleURLTracker::kSearchDomainCheckURL)); 228 fetcher->set_url(GURL(GoogleURLTracker::kSearchDomainCheckURL));
201 fetcher->set_response_code(200); 229 fetcher->set_response_code(200);
202 fetcher->SetResponseString(domain); 230 fetcher->SetResponseString(domain);
203 fetcher->delegate()->OnURLFetchComplete(fetcher); 231 fetcher->delegate()->OnURLFetchComplete(fetcher);
204 // At this point, |fetcher| is deleted. 232 // At this point, |fetcher| is deleted.
205 } 233 }
206 234
207 void GoogleURLTrackerTest::RequestServerCheck() { 235 void GoogleURLTrackerTest::RequestServerCheck() {
208 if (!registrar_.IsRegistered(observer_.get(), 236 if (!registrar_.IsRegistered(&observer_,
209 chrome::NOTIFICATION_GOOGLE_URL_UPDATED, 237 chrome::NOTIFICATION_GOOGLE_URL_UPDATED,
210 content::Source<Profile>(&profile_))) { 238 content::Source<Profile>(&profile_))) {
211 registrar_.Add(observer_.get(), chrome::NOTIFICATION_GOOGLE_URL_UPDATED, 239 registrar_.Add(&observer_, chrome::NOTIFICATION_GOOGLE_URL_UPDATED,
212 content::Source<Profile>(&profile_)); 240 content::Source<Profile>(&profile_));
213 } 241 }
214 google_url_tracker_->SetNeedToFetch(); 242 google_url_tracker_->SetNeedToFetch();
215 } 243 }
216 244
217 void GoogleURLTrackerTest::FinishSleep() { 245 void GoogleURLTrackerTest::FinishSleep() {
218 google_url_tracker_->FinishSleep(); 246 google_url_tracker_->FinishSleep();
219 } 247 }
220 248
221 void GoogleURLTrackerTest::NotifyIPAddressChanged() { 249 void GoogleURLTrackerTest::NotifyIPAddressChanged() {
222 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 250 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
223 // For thread safety, the NCN queues tasks to do the actual notifications, so 251 // For thread safety, the NCN queues tasks to do the actual notifications, so
224 // we need to spin the message loop so the tracker will actually be notified. 252 // we need to spin the message loop so the tracker will actually be notified.
225 MessageLoop::current()->RunAllPending(); 253 MessageLoop::current()->RunAllPending();
226 } 254 }
227 255
228 void GoogleURLTrackerTest::SetLastPromptedGoogleURL(const GURL& url) { 256 void GoogleURLTrackerTest::SetLastPromptedGoogleURL(const GURL& url) {
229 profile_.GetPrefs()->SetString(prefs::kLastPromptedGoogleURL, url.spec()); 257 profile_.GetPrefs()->SetString(prefs::kLastPromptedGoogleURL, url.spec());
230 } 258 }
231 259
232 GURL GoogleURLTrackerTest::GetLastPromptedGoogleURL() { 260 GURL GoogleURLTrackerTest::GetLastPromptedGoogleURL() {
233 return GURL(profile_.GetPrefs()->GetString(prefs::kLastPromptedGoogleURL)); 261 return GURL(profile_.GetPrefs()->GetString(prefs::kLastPromptedGoogleURL));
234 } 262 }
235 263
236 void GoogleURLTrackerTest::SetNavigationPending(int unique_id, bool is_search) { 264 void GoogleURLTrackerTest::SetNavigationPending(intptr_t unique_id,
265 bool is_search) {
237 if (is_search) { 266 if (is_search) {
238 google_url_tracker_->SearchCommitted(); 267 google_url_tracker_->SearchCommitted();
239 // Note that the call above might not have actually registered a listener 268 // Note that the call above might not have actually registered a listener
240 // for NOTIFICATION_NAV_ENTRY_PENDING if the searchdomaincheck response was 269 // for NOTIFICATION_NAV_ENTRY_PENDING if the searchdomaincheck response was
241 // bogus. 270 // bogus.
242 } 271 }
243 unique_ids_seen_.insert(unique_id); 272 unique_ids_seen_.insert(unique_id);
244 if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(), 273 if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(),
245 content::NOTIFICATION_NAV_ENTRY_PENDING, 274 content::NOTIFICATION_NAV_ENTRY_PENDING,
246 content::NotificationService::AllBrowserContextsAndSources())) { 275 content::NotificationService::AllBrowserContextsAndSources())) {
247 google_url_tracker_->OnNavigationPending( 276 google_url_tracker_->OnNavigationPending(
248 content::Source<content::NavigationController>( 277 content::Source<content::NavigationController>(
249 reinterpret_cast<content::NavigationController*>(unique_id)), 278 reinterpret_cast<content::NavigationController*>(unique_id)),
250 content::Source<content::WebContents>( 279 content::Source<content::WebContents>(
251 reinterpret_cast<content::WebContents*>(unique_id)), 280 reinterpret_cast<content::WebContents*>(unique_id)),
252 reinterpret_cast<InfoBarTabHelper*>(unique_id), unique_id); 281 reinterpret_cast<InfoBarTabHelper*>(unique_id), unique_id);
253 } 282 }
254 } 283 }
255 284
256 void GoogleURLTrackerTest::CommitNonSearch(int unique_id) { 285 void GoogleURLTrackerTest::CommitNonSearch(intptr_t unique_id) {
257 GoogleURLTracker::InfoBarMap::iterator i = 286 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(unique_id);
258 google_url_tracker_->infobar_map_.find( 287 if (!map_entry)
259 reinterpret_cast<InfoBarTabHelper*>(unique_id)); 288 return;
260 if (i != google_url_tracker_->infobar_map_.end()) { 289
261 ExpectListeningForCommit(unique_id, false); 290 ExpectListeningForCommit(unique_id, false);
262 TestInfoBarDelegate* infobar = 291
263 static_cast<TestInfoBarDelegate*>(i->second.infobar); 292 // The infobar should be showing; otherwise the pending non-search should
264 // The infobar should be showing; otherwise the pending non-search should 293 // have closed it.
265 // have closed it. 294 ASSERT_TRUE(map_entry->has_infobar());
266 EXPECT_TRUE(infobar->showing()); 295
267 // The pending_id should have been reset to 0 when the non-search became 296 // The pending_id should have been reset to 0 when the non-search became
268 // pending. 297 // pending.
269 EXPECT_EQ(0, infobar->pending_id()); 298 EXPECT_EQ(0, map_entry->infobar()->pending_id());
270 infobar->InfoBarClosed(); 299
271 } 300 // Committing the navigation would close the infobar.
301 map_entry->infobar()->Close(false);
272 } 302 }
273 303
274 void GoogleURLTrackerTest::CommitSearch(int unique_id, const GURL& search_url) { 304 void GoogleURLTrackerTest::CommitSearch(intptr_t unique_id,
305 const GURL& search_url) {
275 if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(), 306 if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(),
276 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 307 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
277 content::Source<content::NavigationController>( 308 content::Source<content::NavigationController>(
278 reinterpret_cast<content::NavigationController*>(unique_id)))) { 309 reinterpret_cast<content::NavigationController*>(unique_id)))) {
279 google_url_tracker_->OnNavigationCommittedOrTabClosed( 310 google_url_tracker_->OnNavigationCommittedOrTabClosed(
280 reinterpret_cast<InfoBarTabHelper*>(unique_id), 311 reinterpret_cast<InfoBarTabHelper*>(unique_id),
281 search_url); 312 search_url);
282 } 313 }
283 } 314 }
284 315
285 void GoogleURLTrackerTest::DoInstantNavigation(int unique_id, 316 void GoogleURLTrackerTest::DoInstantNavigation(intptr_t unique_id,
286 const GURL& search_url) { 317 const GURL& search_url) {
287 if (!search_url.is_empty()) { 318 if (!search_url.is_empty()) {
288 google_url_tracker_->SearchCommitted(); 319 google_url_tracker_->SearchCommitted();
289 // Note that the call above might not have actually registered a listener 320 // Note that the call above might not have actually registered a listener
290 // for NOTIFICATION_INSTANT_COMMITTED if the searchdomaincheck response was 321 // for NOTIFICATION_INSTANT_COMMITTED if the searchdomaincheck response was
291 // bogus. 322 // bogus.
292 } 323 }
293 unique_ids_seen_.insert(unique_id); 324 unique_ids_seen_.insert(unique_id);
294 if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(), 325 if (google_url_tracker_->registrar_.IsRegistered(google_url_tracker_.get(),
295 chrome::NOTIFICATION_INSTANT_COMMITTED, 326 chrome::NOTIFICATION_INSTANT_COMMITTED,
296 content::NotificationService::AllBrowserContextsAndSources())) { 327 content::NotificationService::AllBrowserContextsAndSources())) {
297 google_url_tracker_->OnInstantCommitted( 328 google_url_tracker_->OnInstantCommitted(
298 content::Source<content::NavigationController>( 329 content::Source<content::NavigationController>(
299 reinterpret_cast<content::NavigationController*>(unique_id)), 330 reinterpret_cast<content::NavigationController*>(unique_id)),
300 content::Source<content::WebContents>( 331 content::Source<content::WebContents>(
301 reinterpret_cast<content::WebContents*>(unique_id)), 332 reinterpret_cast<content::WebContents*>(unique_id)),
302 reinterpret_cast<InfoBarTabHelper*>(unique_id), search_url); 333 reinterpret_cast<InfoBarTabHelper*>(unique_id), search_url);
303 } 334 }
304 } 335 }
305 336
306 void GoogleURLTrackerTest::CloseTab(int unique_id) { 337 void GoogleURLTrackerTest::CloseTab(intptr_t unique_id) {
307 unique_ids_seen_.erase(unique_id); 338 unique_ids_seen_.erase(unique_id);
308 InfoBarTabHelper* infobar_helper = 339 InfoBarTabHelper* infobar_helper =
309 reinterpret_cast<InfoBarTabHelper*>(unique_id); 340 reinterpret_cast<InfoBarTabHelper*>(unique_id);
310 if (google_url_tracker_->registrar_.IsRegistered( 341 if (google_url_tracker_->registrar_.IsRegistered(
311 google_url_tracker_.get(), 342 google_url_tracker_.get(), content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
312 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, 343 content::Source<content::WebContents>(
313 content::Source<content::WebContents>( 344 reinterpret_cast<content::WebContents*>(unique_id)))) {
314 reinterpret_cast<content::WebContents*>(unique_id)))) {
315 google_url_tracker_->OnNavigationCommittedOrTabClosed(infobar_helper, 345 google_url_tracker_->OnNavigationCommittedOrTabClosed(infobar_helper,
316 GURL()); 346 GURL());
317 } else { 347 } else {
318 // Normally, closing a tab with an infobar showing will close the infobar. 348 // Closing a tab with an infobar showing would close the infobar.
319 // Since we don't have real tabs and are just faking things with magic 349 GoogleURLTrackerInfoBarDelegate* infobar = GetInfoBar(unique_id);
320 // numbers, we have to manually close the infobar, if any. 350 if (infobar)
321 GoogleURLTracker::InfoBarMap::iterator i = 351 infobar->Close(false);
322 google_url_tracker_->infobar_map_.find(infobar_helper);
323 if (i != google_url_tracker_->infobar_map_.end()) {
324 TestInfoBarDelegate* infobar =
325 static_cast<TestInfoBarDelegate*>(i->second.infobar);
326 EXPECT_TRUE(infobar->showing());
327 infobar->InfoBarClosed();
328 }
329 } 352 }
330 } 353 }
331 354
332 TestInfoBarDelegate* GoogleURLTrackerTest::GetInfoBar(int unique_id) { 355 GoogleURLTrackerMapEntry* GoogleURLTrackerTest::GetMapEntry(
356 intptr_t unique_id) {
333 GoogleURLTracker::InfoBarMap::const_iterator i = 357 GoogleURLTracker::InfoBarMap::const_iterator i =
334 google_url_tracker_->infobar_map_.find( 358 google_url_tracker_->infobar_map_.find(
335 reinterpret_cast<InfoBarTabHelper*>(unique_id)); 359 reinterpret_cast<InfoBarTabHelper*>(unique_id));
336 return (i == google_url_tracker_->infobar_map_.end()) ? 360 return (i == google_url_tracker_->infobar_map_.end()) ? NULL : i->second;
337 NULL : static_cast<TestInfoBarDelegate*>(i->second.infobar); 361 }
362
363 GoogleURLTrackerInfoBarDelegate* GoogleURLTrackerTest::GetInfoBar(
364 intptr_t unique_id) {
365 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(unique_id);
366 return map_entry ? map_entry->infobar() : NULL;
338 } 367 }
339 368
340 void GoogleURLTrackerTest::ExpectDefaultURLs() const { 369 void GoogleURLTrackerTest::ExpectDefaultURLs() const {
341 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 370 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
342 EXPECT_EQ(GURL(), fetched_google_url()); 371 EXPECT_EQ(GURL(), fetched_google_url());
343 } 372 }
344 373
345 void GoogleURLTrackerTest::ExpectListeningForCommit(int unique_id, 374 void GoogleURLTrackerTest::ExpectListeningForCommit(intptr_t unique_id,
346 bool listening) const { 375 bool listening) {
347 GoogleURLTracker::InfoBarMap::iterator i = 376 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(unique_id);
348 google_url_tracker_->infobar_map_.find( 377 if (map_entry) {
349 reinterpret_cast<InfoBarTabHelper*>(unique_id)); 378 EXPECT_EQ(listening, google_url_tracker_->registrar_.IsRegistered(
350 if (i == google_url_tracker_->infobar_map_.end()) { 379 google_url_tracker_.get(), content::NOTIFICATION_NAV_ENTRY_COMMITTED,
380 map_entry->navigation_controller_source()));
381 } else {
351 EXPECT_FALSE(listening); 382 EXPECT_FALSE(listening);
352 return;
353 } 383 }
354 EXPECT_EQ(listening, google_url_tracker_->registrar_.IsRegistered(
355 google_url_tracker_.get(), content::NOTIFICATION_NAV_ENTRY_COMMITTED,
356 i->second.navigation_controller_source));
357 } 384 }
358 385
386 GoogleURLTrackerInfoBarDelegate* GoogleURLTrackerTest::CreateTestInfoBar(
387 InfoBarTabHelper* infobar_helper,
388 GoogleURLTracker* google_url_tracker,
389 const GURL& search_url) {
390 return new TestInfoBarDelegate(this, infobar_helper, google_url_tracker,
391 search_url);
392 }
393
394
395 // TestInfoBarDelegate --------------------------------------------------------
396
397 namespace {
398
399 TestInfoBarDelegate::TestInfoBarDelegate(GoogleURLTrackerTest* test_harness,
400 InfoBarTabHelper* infobar_helper,
401 GoogleURLTracker* google_url_tracker,
402 const GURL& search_url)
403 : GoogleURLTrackerInfoBarDelegate(NULL, google_url_tracker, search_url),
404 test_harness_(test_harness),
405 infobar_helper_(infobar_helper) {
406 }
407
408 TestInfoBarDelegate::~TestInfoBarDelegate() {
409 }
410
411 void TestInfoBarDelegate::Update(const GURL& search_url) {
412 set_search_url(search_url);
413 set_pending_id(0);
414 }
415
416 void TestInfoBarDelegate::Close(bool redo_search) {
417 test_harness_->OnInfoBarClosed(this, infobar_helper_);
418 }
419
420 } // namespace
421
359 422
360 // Tests ---------------------------------------------------------------------- 423 // Tests ----------------------------------------------------------------------
361 424
362 TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) { 425 TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) {
363 ExpectDefaultURLs(); 426 ExpectDefaultURLs();
364 FinishSleep(); 427 FinishSleep();
365 // No one called RequestServerCheck() so nothing should have happened. 428 // No one called RequestServerCheck() so nothing should have happened.
366 EXPECT_FALSE(GetFetcher()); 429 EXPECT_FALSE(GetFetcher());
367 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 430 MockSearchDomainCheckResponse("http://www.google.co.uk/");
368 ExpectDefaultURLs(); 431 ExpectDefaultURLs();
369 EXPECT_FALSE(observer_->notified()); 432 EXPECT_FALSE(observer_notified());
370 } 433 }
371 434
372 TEST_F(GoogleURLTrackerTest, UpdateOnFirstRun) { 435 TEST_F(GoogleURLTrackerTest, UpdateOnFirstRun) {
373 RequestServerCheck(); 436 RequestServerCheck();
374 EXPECT_FALSE(GetFetcher()); 437 EXPECT_FALSE(GetFetcher());
375 ExpectDefaultURLs(); 438 ExpectDefaultURLs();
376 EXPECT_FALSE(observer_->notified()); 439 EXPECT_FALSE(observer_notified());
377 440
378 FinishSleep(); 441 FinishSleep();
379 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 442 MockSearchDomainCheckResponse("http://www.google.co.uk/");
380 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 443 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
381 // GoogleURL should be updated, becase there was no last prompted URL. 444 // GoogleURL should be updated, becase there was no last prompted URL.
382 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 445 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
383 EXPECT_TRUE(observer_->notified()); 446 EXPECT_TRUE(observer_notified());
384 } 447 }
385 448
386 TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) { 449 TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) {
387 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 450 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
388 451
389 RequestServerCheck(); 452 RequestServerCheck();
390 EXPECT_FALSE(GetFetcher()); 453 EXPECT_FALSE(GetFetcher());
391 ExpectDefaultURLs(); 454 ExpectDefaultURLs();
392 EXPECT_FALSE(observer_->notified()); 455 EXPECT_FALSE(observer_notified());
393 456
394 FinishSleep(); 457 FinishSleep();
395 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 458 MockSearchDomainCheckResponse("http://www.google.co.uk/");
396 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 459 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
397 // GoogleURL should not be updated, because the fetched and prompted URLs 460 // GoogleURL should not be updated, because the fetched and prompted URLs
398 // match. 461 // match.
399 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 462 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
400 EXPECT_FALSE(observer_->notified()); 463 EXPECT_FALSE(observer_notified());
401 } 464 }
402 465
403 TEST_F(GoogleURLTrackerTest, DontPromptOnBadReplies) { 466 TEST_F(GoogleURLTrackerTest, DontPromptOnBadReplies) {
404 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 467 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
405 468
406 RequestServerCheck(); 469 RequestServerCheck();
407 EXPECT_FALSE(GetFetcher()); 470 EXPECT_FALSE(GetFetcher());
408 ExpectDefaultURLs(); 471 ExpectDefaultURLs();
409 EXPECT_FALSE(observer_->notified()); 472 EXPECT_FALSE(observer_notified());
410 473
411 // Old-style domain string. 474 // Old-style domain string.
412 FinishSleep(); 475 FinishSleep();
413 MockSearchDomainCheckResponse(".google.co.in"); 476 MockSearchDomainCheckResponse(".google.co.in");
414 EXPECT_EQ(GURL(), fetched_google_url()); 477 EXPECT_EQ(GURL(), fetched_google_url());
415 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 478 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
416 EXPECT_FALSE(observer_->notified()); 479 EXPECT_FALSE(observer_notified());
417 SetNavigationPending(1, true); 480 SetNavigationPending(1, true);
418 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 481 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
419 EXPECT_TRUE(GetInfoBar(1) == NULL); 482 EXPECT_TRUE(GetMapEntry(1) == NULL);
420 483
421 // Bad subdomain. 484 // Bad subdomain.
422 NotifyIPAddressChanged(); 485 NotifyIPAddressChanged();
423 MockSearchDomainCheckResponse("http://mail.google.com/"); 486 MockSearchDomainCheckResponse("http://mail.google.com/");
424 EXPECT_EQ(GURL(), fetched_google_url()); 487 EXPECT_EQ(GURL(), fetched_google_url());
425 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 488 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
426 EXPECT_FALSE(observer_->notified()); 489 EXPECT_FALSE(observer_notified());
427 SetNavigationPending(1, true); 490 SetNavigationPending(1, true);
428 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 491 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
429 EXPECT_TRUE(GetInfoBar(1) == NULL); 492 EXPECT_TRUE(GetMapEntry(1) == NULL);
430 493
431 // Non-empty path. 494 // Non-empty path.
432 NotifyIPAddressChanged(); 495 NotifyIPAddressChanged();
433 MockSearchDomainCheckResponse("http://www.google.com/search"); 496 MockSearchDomainCheckResponse("http://www.google.com/search");
434 EXPECT_EQ(GURL(), fetched_google_url()); 497 EXPECT_EQ(GURL(), fetched_google_url());
435 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 498 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
436 EXPECT_FALSE(observer_->notified()); 499 EXPECT_FALSE(observer_notified());
437 SetNavigationPending(1, true); 500 SetNavigationPending(1, true);
438 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 501 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
439 EXPECT_TRUE(GetInfoBar(1) == NULL); 502 EXPECT_TRUE(GetMapEntry(1) == NULL);
440 503
441 // Non-empty query. 504 // Non-empty query.
442 NotifyIPAddressChanged(); 505 NotifyIPAddressChanged();
443 MockSearchDomainCheckResponse("http://www.google.com/?q=foo"); 506 MockSearchDomainCheckResponse("http://www.google.com/?q=foo");
444 EXPECT_EQ(GURL(), fetched_google_url()); 507 EXPECT_EQ(GURL(), fetched_google_url());
445 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 508 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
446 EXPECT_FALSE(observer_->notified()); 509 EXPECT_FALSE(observer_notified());
447 SetNavigationPending(1, true); 510 SetNavigationPending(1, true);
448 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 511 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
449 EXPECT_TRUE(GetInfoBar(1) == NULL); 512 EXPECT_TRUE(GetMapEntry(1) == NULL);
450 513
451 // Non-empty ref. 514 // Non-empty ref.
452 NotifyIPAddressChanged(); 515 NotifyIPAddressChanged();
453 MockSearchDomainCheckResponse("http://www.google.com/#anchor"); 516 MockSearchDomainCheckResponse("http://www.google.com/#anchor");
454 EXPECT_EQ(GURL(), fetched_google_url()); 517 EXPECT_EQ(GURL(), fetched_google_url());
455 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 518 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
456 EXPECT_FALSE(observer_->notified()); 519 EXPECT_FALSE(observer_notified());
457 SetNavigationPending(1, true); 520 SetNavigationPending(1, true);
458 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 521 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
459 EXPECT_TRUE(GetInfoBar(1) == NULL); 522 EXPECT_TRUE(GetMapEntry(1) == NULL);
460 523
461 // Complete garbage. 524 // Complete garbage.
462 NotifyIPAddressChanged(); 525 NotifyIPAddressChanged();
463 MockSearchDomainCheckResponse("HJ)*qF)_*&@f1"); 526 MockSearchDomainCheckResponse("HJ)*qF)_*&@f1");
464 EXPECT_EQ(GURL(), fetched_google_url()); 527 EXPECT_EQ(GURL(), fetched_google_url());
465 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 528 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
466 EXPECT_FALSE(observer_->notified()); 529 EXPECT_FALSE(observer_notified());
467 SetNavigationPending(1, true); 530 SetNavigationPending(1, true);
468 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 531 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
469 EXPECT_TRUE(GetInfoBar(1) == NULL); 532 EXPECT_TRUE(GetMapEntry(1) == NULL);
470 } 533 }
471 534
472 TEST_F(GoogleURLTrackerTest, UpdatePromptedURLOnReturnToPreviousLocation) { 535 TEST_F(GoogleURLTrackerTest, UpdatePromptedURLOnReturnToPreviousLocation) {
473 SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/")); 536 SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/"));
474 set_google_url(GURL("http://www.google.co.uk/")); 537 set_google_url(GURL("http://www.google.co.uk/"));
475 RequestServerCheck(); 538 RequestServerCheck();
476 FinishSleep(); 539 FinishSleep();
477 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 540 MockSearchDomainCheckResponse("http://www.google.co.uk/");
478 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 541 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
479 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 542 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
480 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 543 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
481 EXPECT_FALSE(observer_->notified()); 544 EXPECT_FALSE(observer_notified());
482 } 545 }
483 546
484 TEST_F(GoogleURLTrackerTest, SilentlyAcceptSchemeChange) { 547 TEST_F(GoogleURLTrackerTest, SilentlyAcceptSchemeChange) {
485 // We should auto-accept changes to the current Google URL that merely change 548 // We should auto-accept changes to the current Google URL that merely change
486 // the scheme, regardless of what the last prompted URL was. 549 // the scheme, regardless of what the last prompted URL was.
487 SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/")); 550 SetLastPromptedGoogleURL(GURL("http://www.google.co.jp/"));
488 set_google_url(GURL("http://www.google.co.uk/")); 551 set_google_url(GURL("http://www.google.co.uk/"));
489 RequestServerCheck(); 552 RequestServerCheck();
490 FinishSleep(); 553 FinishSleep();
491 MockSearchDomainCheckResponse("https://www.google.co.uk/"); 554 MockSearchDomainCheckResponse("https://www.google.co.uk/");
492 EXPECT_EQ(GURL("https://www.google.co.uk/"), fetched_google_url()); 555 EXPECT_EQ(GURL("https://www.google.co.uk/"), fetched_google_url());
493 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); 556 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url());
494 EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL()); 557 EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL());
495 EXPECT_TRUE(observer_->notified()); 558 EXPECT_TRUE(observer_notified());
496 559
497 NotifyIPAddressChanged(); 560 NotifyIPAddressChanged();
498 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 561 MockSearchDomainCheckResponse("http://www.google.co.uk/");
499 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 562 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
500 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 563 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
501 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 564 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
502 EXPECT_TRUE(observer_->notified()); 565 EXPECT_TRUE(observer_notified());
503 } 566 }
504 567
505 TEST_F(GoogleURLTrackerTest, RefetchOnIPAddressChange) { 568 TEST_F(GoogleURLTrackerTest, RefetchOnIPAddressChange) {
506 RequestServerCheck(); 569 RequestServerCheck();
507 FinishSleep(); 570 FinishSleep();
508 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 571 MockSearchDomainCheckResponse("http://www.google.co.uk/");
509 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 572 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
510 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 573 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
511 EXPECT_TRUE(observer_->notified()); 574 EXPECT_TRUE(observer_notified());
512 observer_->clear_notified(); 575 clear_observer_notified();
513 576
514 NotifyIPAddressChanged(); 577 NotifyIPAddressChanged();
515 MockSearchDomainCheckResponse("http://www.google.co.in/"); 578 MockSearchDomainCheckResponse("http://www.google.co.in/");
516 EXPECT_EQ(GURL("http://www.google.co.in/"), fetched_google_url()); 579 EXPECT_EQ(GURL("http://www.google.co.in/"), fetched_google_url());
517 // Just fetching a new URL shouldn't reset things without a prompt. 580 // Just fetching a new URL shouldn't reset things without a prompt.
518 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 581 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
519 EXPECT_FALSE(observer_->notified()); 582 EXPECT_FALSE(observer_notified());
520 } 583 }
521 584
522 TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) { 585 TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) {
523 FinishSleep(); 586 FinishSleep();
524 NotifyIPAddressChanged(); 587 NotifyIPAddressChanged();
525 // No one called RequestServerCheck() so nothing should have happened. 588 // No one called RequestServerCheck() so nothing should have happened.
526 EXPECT_FALSE(GetFetcher()); 589 EXPECT_FALSE(GetFetcher());
527 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 590 MockSearchDomainCheckResponse("http://www.google.co.uk/");
528 ExpectDefaultURLs(); 591 ExpectDefaultURLs();
529 EXPECT_FALSE(observer_->notified()); 592 EXPECT_FALSE(observer_notified());
530 } 593 }
531 594
532 TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) { 595 TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) {
533 FinishSleep(); 596 FinishSleep();
534 NotifyIPAddressChanged(); 597 NotifyIPAddressChanged();
535 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 598 MockSearchDomainCheckResponse("http://www.google.co.jp/");
536 599
537 RequestServerCheck(); 600 RequestServerCheck();
538 // The first request for a check should trigger a fetch if it hasn't happened 601 // The first request for a check should trigger a fetch if it hasn't happened
539 // already. 602 // already.
540 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 603 MockSearchDomainCheckResponse("http://www.google.co.uk/");
541 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 604 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
542 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 605 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
543 EXPECT_TRUE(observer_->notified()); 606 EXPECT_TRUE(observer_notified());
544 } 607 }
545 608
546 TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) { 609 TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) {
547 FinishSleep(); 610 FinishSleep();
548 NotifyIPAddressChanged(); 611 NotifyIPAddressChanged();
549 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 612 MockSearchDomainCheckResponse("http://www.google.co.jp/");
550 613
551 RequestServerCheck(); 614 RequestServerCheck();
552 // The first request for a check should trigger a fetch if it hasn't happened 615 // The first request for a check should trigger a fetch if it hasn't happened
553 // already. 616 // already.
554 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 617 MockSearchDomainCheckResponse("http://www.google.co.uk/");
555 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 618 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
556 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 619 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
557 EXPECT_TRUE(observer_->notified()); 620 EXPECT_TRUE(observer_notified());
558 observer_->clear_notified(); 621 clear_observer_notified();
559 622
560 RequestServerCheck(); 623 RequestServerCheck();
561 // The second request should be ignored. 624 // The second request should be ignored.
562 EXPECT_FALSE(GetFetcher()); 625 EXPECT_FALSE(GetFetcher());
563 MockSearchDomainCheckResponse("http://www.google.co.in/"); 626 MockSearchDomainCheckResponse("http://www.google.co.in/");
564 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 627 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
565 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 628 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
566 EXPECT_FALSE(observer_->notified()); 629 EXPECT_FALSE(observer_notified());
567 } 630 }
568 631
569 TEST_F(GoogleURLTrackerTest, SearchingDoesNothingIfNoNeedToPrompt) { 632 TEST_F(GoogleURLTrackerTest, SearchingDoesNothingIfNoNeedToPrompt) {
570 RequestServerCheck(); 633 RequestServerCheck();
571 FinishSleep(); 634 FinishSleep();
572 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 635 MockSearchDomainCheckResponse("http://www.google.co.uk/");
573 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 636 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
574 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 637 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
575 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 638 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
576 EXPECT_TRUE(observer_->notified()); 639 EXPECT_TRUE(observer_notified());
577 observer_->clear_notified(); 640 clear_observer_notified();
578 641
579 SetNavigationPending(1, true); 642 SetNavigationPending(1, true);
580 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 643 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
581 TestInfoBarDelegate* infobar = GetInfoBar(1); 644 EXPECT_TRUE(GetMapEntry(1) == NULL);
582 EXPECT_TRUE(infobar == NULL);
583 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url()); 645 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
584 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); 646 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url());
585 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 647 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
586 EXPECT_FALSE(observer_->notified()); 648 EXPECT_FALSE(observer_notified());
587 } 649 }
588 650
589 TEST_F(GoogleURLTrackerTest, TabClosedOnPendingSearch) { 651 TEST_F(GoogleURLTrackerTest, TabClosedOnPendingSearch) {
590 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 652 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
591 RequestServerCheck(); 653 RequestServerCheck();
592 FinishSleep(); 654 FinishSleep();
593 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 655 MockSearchDomainCheckResponse("http://www.google.co.jp/");
594 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 656 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
595 EXPECT_EQ(GURL("http://www.google.co.jp/"), fetched_google_url()); 657 EXPECT_EQ(GURL("http://www.google.co.jp/"), fetched_google_url());
596 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 658 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
597 EXPECT_FALSE(observer_->notified()); 659 EXPECT_FALSE(observer_notified());
598 660
599 SetNavigationPending(1, true); 661 SetNavigationPending(1, true);
600 TestInfoBarDelegate* infobar = GetInfoBar(1); 662 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(1);
601 ASSERT_FALSE(infobar == NULL); 663 ASSERT_FALSE(map_entry == NULL);
602 EXPECT_FALSE(infobar->showing()); 664 EXPECT_FALSE(map_entry->has_infobar());
603 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 665 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
604 EXPECT_EQ(GURL("http://www.google.co.jp/"), infobar->new_google_url());
605 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 666 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
606 EXPECT_FALSE(observer_->notified()); 667 EXPECT_FALSE(observer_notified());
607 668
608 CloseTab(1); 669 CloseTab(1);
609 EXPECT_TRUE(GetInfoBar(1) == NULL); 670 EXPECT_TRUE(GetMapEntry(1) == NULL);
610 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 671 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
611 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 672 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
612 EXPECT_FALSE(observer_->notified()); 673 EXPECT_FALSE(observer_notified());
613 } 674 }
614 675
615 TEST_F(GoogleURLTrackerTest, TabClosedOnCommittedSearch) { 676 TEST_F(GoogleURLTrackerTest, TabClosedOnCommittedSearch) {
616 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 677 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
617 RequestServerCheck(); 678 RequestServerCheck();
618 FinishSleep(); 679 FinishSleep();
619 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 680 MockSearchDomainCheckResponse("http://www.google.co.jp/");
620 681
621 SetNavigationPending(1, true); 682 SetNavigationPending(1, true);
622 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 683 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
623 TestInfoBarDelegate* infobar = GetInfoBar(1); 684 EXPECT_FALSE(GetInfoBar(1) == NULL);
624 ASSERT_FALSE(infobar == NULL);
625 EXPECT_TRUE(infobar->showing());
626 685
627 CloseTab(1); 686 CloseTab(1);
628 EXPECT_TRUE(GetInfoBar(1) == NULL); 687 EXPECT_TRUE(GetMapEntry(1) == NULL);
629 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 688 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
630 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 689 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
631 EXPECT_FALSE(observer_->notified()); 690 EXPECT_FALSE(observer_notified());
632 } 691 }
633 692
634 TEST_F(GoogleURLTrackerTest, InfobarClosed) { 693 TEST_F(GoogleURLTrackerTest, InfoBarClosed) {
635 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 694 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
636 RequestServerCheck(); 695 RequestServerCheck();
637 FinishSleep(); 696 FinishSleep();
638 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 697 MockSearchDomainCheckResponse("http://www.google.co.jp/");
639 698
640 SetNavigationPending(1, true); 699 SetNavigationPending(1, true);
641 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 700 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
642 TestInfoBarDelegate* infobar = GetInfoBar(1); 701 GoogleURLTrackerInfoBarDelegate* infobar = GetInfoBar(1);
643 ASSERT_FALSE(infobar == NULL); 702 ASSERT_FALSE(infobar == NULL);
644 703
645 infobar->InfoBarClosed(); 704 infobar->Close(false);
646 EXPECT_TRUE(GetInfoBar(1) == NULL); 705 EXPECT_TRUE(GetMapEntry(1) == NULL);
647 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 706 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
648 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 707 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
649 EXPECT_FALSE(observer_->notified()); 708 EXPECT_FALSE(observer_notified());
650 } 709 }
651 710
652 TEST_F(GoogleURLTrackerTest, InfobarRefused) { 711 TEST_F(GoogleURLTrackerTest, InfoBarRefused) {
653 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 712 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
654 RequestServerCheck(); 713 RequestServerCheck();
655 FinishSleep(); 714 FinishSleep();
656 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 715 MockSearchDomainCheckResponse("http://www.google.co.jp/");
657 716
658 SetNavigationPending(1, true); 717 SetNavigationPending(1, true);
659 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 718 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
660 TestInfoBarDelegate* infobar = GetInfoBar(1); 719 GoogleURLTrackerInfoBarDelegate* infobar = GetInfoBar(1);
661 ASSERT_FALSE(infobar == NULL); 720 ASSERT_FALSE(infobar == NULL);
662 721
663 infobar->Cancel(); 722 infobar->Cancel();
664 EXPECT_TRUE(GetInfoBar(1) == NULL); 723 EXPECT_TRUE(GetMapEntry(1) == NULL);
665 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 724 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
666 EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL()); 725 EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
667 EXPECT_FALSE(observer_->notified()); 726 EXPECT_FALSE(observer_notified());
668 } 727 }
669 728
670 TEST_F(GoogleURLTrackerTest, InfobarAccepted) { 729 TEST_F(GoogleURLTrackerTest, InfoBarAccepted) {
671 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 730 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
672 RequestServerCheck(); 731 RequestServerCheck();
673 FinishSleep(); 732 FinishSleep();
674 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 733 MockSearchDomainCheckResponse("http://www.google.co.jp/");
675 734
676 SetNavigationPending(1, true); 735 SetNavigationPending(1, true);
677 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 736 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
678 TestInfoBarDelegate* infobar = GetInfoBar(1); 737 GoogleURLTrackerInfoBarDelegate* infobar = GetInfoBar(1);
679 ASSERT_FALSE(infobar == NULL); 738 ASSERT_FALSE(infobar == NULL);
680 739
681 infobar->Accept(); 740 infobar->Accept();
682 EXPECT_TRUE(GetInfoBar(1) == NULL); 741 EXPECT_TRUE(GetMapEntry(1) == NULL);
683 EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url()); 742 EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url());
684 EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL()); 743 EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
685 EXPECT_TRUE(observer_->notified()); 744 EXPECT_TRUE(observer_notified());
686 } 745 }
687 746
688 TEST_F(GoogleURLTrackerTest, InfobarForInstant) { 747 TEST_F(GoogleURLTrackerTest, InfoBarForInstant) {
689 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 748 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
690 RequestServerCheck(); 749 RequestServerCheck();
691 FinishSleep(); 750 FinishSleep();
692 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 751 MockSearchDomainCheckResponse("http://www.google.co.jp/");
693 752
694 DoInstantNavigation(1, GURL("http://www.google.co.uk/search?q=test")); 753 DoInstantNavigation(1, GURL("http://www.google.co.uk/search?q=test"));
695 TestInfoBarDelegate* infobar = GetInfoBar(1); 754 EXPECT_FALSE(GetInfoBar(1) == NULL);
696 ASSERT_FALSE(infobar == NULL);
697 EXPECT_TRUE(infobar->showing());
698 } 755 }
699 756
700 TEST_F(GoogleURLTrackerTest, FetchesCanAutomaticallyCloseInfobars) { 757 TEST_F(GoogleURLTrackerTest, FetchesCanAutomaticallyCloseInfoBars) {
701 RequestServerCheck(); 758 RequestServerCheck();
702 FinishSleep(); 759 FinishSleep();
703 MockSearchDomainCheckResponse(google_url().spec()); 760 MockSearchDomainCheckResponse(google_url().spec());
704 761
705 // Re-fetching the accepted URL after showing an infobar for another URL 762 // Re-fetching the accepted URL after showing an infobar for another URL
706 // should close the infobar. 763 // should close the infobar.
707 NotifyIPAddressChanged(); 764 NotifyIPAddressChanged();
708 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 765 MockSearchDomainCheckResponse("http://www.google.co.uk/");
709 SetNavigationPending(1, true); 766 SetNavigationPending(1, true);
710 CommitSearch(1, GURL("http://www.google.com/search?q=test")); 767 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
711 EXPECT_FALSE(GetInfoBar(1) == NULL); 768 EXPECT_FALSE(GetInfoBar(1) == NULL);
712 NotifyIPAddressChanged(); 769 NotifyIPAddressChanged();
713 MockSearchDomainCheckResponse(google_url().spec()); 770 MockSearchDomainCheckResponse(google_url().spec());
714 EXPECT_EQ(google_url(), GetLastPromptedGoogleURL()); 771 EXPECT_EQ(google_url(), GetLastPromptedGoogleURL());
715 EXPECT_TRUE(GetInfoBar(1) == NULL); 772 EXPECT_TRUE(GetMapEntry(1) == NULL);
716 773
717 // As should fetching a URL that differs from the accepted only by the scheme. 774 // As should fetching a URL that differs from the accepted only by the scheme.
718 NotifyIPAddressChanged(); 775 NotifyIPAddressChanged();
719 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 776 MockSearchDomainCheckResponse("http://www.google.co.uk/");
720 SetNavigationPending(1, true); 777 SetNavigationPending(1, true);
721 CommitSearch(1, GURL("http://www.google.com/search?q=test")); 778 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
722 EXPECT_FALSE(GetInfoBar(1) == NULL); 779 EXPECT_FALSE(GetInfoBar(1) == NULL);
723 NotifyIPAddressChanged(); 780 NotifyIPAddressChanged();
724 url_canon::Replacements<char> replacements; 781 url_canon::Replacements<char> replacements;
725 const std::string& scheme("https"); 782 const std::string& scheme("https");
726 replacements.SetScheme(scheme.data(), 783 replacements.SetScheme(scheme.data(),
727 url_parse::Component(0, scheme.length())); 784 url_parse::Component(0, scheme.length()));
728 GURL new_google_url(google_url().ReplaceComponents(replacements)); 785 GURL new_google_url(google_url().ReplaceComponents(replacements));
729 MockSearchDomainCheckResponse(new_google_url.spec()); 786 MockSearchDomainCheckResponse(new_google_url.spec());
730 EXPECT_EQ(new_google_url, GetLastPromptedGoogleURL()); 787 EXPECT_EQ(new_google_url, GetLastPromptedGoogleURL());
731 EXPECT_TRUE(GetInfoBar(1) == NULL); 788 EXPECT_TRUE(GetMapEntry(1) == NULL);
732 789
733 // As should re-fetching the last prompted URL. 790 // As should re-fetching the last prompted URL.
734 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 791 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
735 NotifyIPAddressChanged(); 792 NotifyIPAddressChanged();
736 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 793 MockSearchDomainCheckResponse("http://www.google.co.jp/");
737 SetNavigationPending(1, true); 794 SetNavigationPending(1, true);
738 CommitSearch(1, GURL("http://www.google.com/search?q=test")); 795 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
739 EXPECT_FALSE(GetInfoBar(1) == NULL); 796 EXPECT_FALSE(GetInfoBar(1) == NULL);
740 NotifyIPAddressChanged(); 797 NotifyIPAddressChanged();
741 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 798 MockSearchDomainCheckResponse("http://www.google.co.uk/");
742 EXPECT_EQ(new_google_url, google_url()); 799 EXPECT_EQ(new_google_url, google_url());
743 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 800 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
744 EXPECT_TRUE(GetInfoBar(1) == NULL); 801 EXPECT_TRUE(GetMapEntry(1) == NULL);
745 802
746 // And one that differs from the last prompted URL only by the scheme. 803 // And one that differs from the last prompted URL only by the scheme.
747 NotifyIPAddressChanged(); 804 NotifyIPAddressChanged();
748 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 805 MockSearchDomainCheckResponse("http://www.google.co.jp/");
749 SetNavigationPending(1, true); 806 SetNavigationPending(1, true);
750 CommitSearch(1, GURL("http://www.google.com/search?q=test")); 807 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
751 EXPECT_FALSE(GetInfoBar(1) == NULL); 808 EXPECT_FALSE(GetInfoBar(1) == NULL);
752 NotifyIPAddressChanged(); 809 NotifyIPAddressChanged();
753 MockSearchDomainCheckResponse("https://www.google.co.uk/"); 810 MockSearchDomainCheckResponse("https://www.google.co.uk/");
754 EXPECT_EQ(new_google_url, google_url()); 811 EXPECT_EQ(new_google_url, google_url());
755 EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL()); 812 EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL());
756 EXPECT_TRUE(GetInfoBar(1) == NULL); 813 EXPECT_TRUE(GetMapEntry(1) == NULL);
757 814
758 // And fetching a different URL entirely. 815 // And fetching a different URL entirely.
759 NotifyIPAddressChanged(); 816 NotifyIPAddressChanged();
760 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 817 MockSearchDomainCheckResponse("http://www.google.co.jp/");
761 SetNavigationPending(1, true); 818 SetNavigationPending(1, true);
762 CommitSearch(1, GURL("http://www.google.com/search?q=test")); 819 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
763 EXPECT_FALSE(GetInfoBar(1) == NULL); 820 EXPECT_FALSE(GetInfoBar(1) == NULL);
764 NotifyIPAddressChanged(); 821 NotifyIPAddressChanged();
765 MockSearchDomainCheckResponse("https://www.google.co.in/"); 822 MockSearchDomainCheckResponse("https://www.google.co.in/");
766 EXPECT_EQ(new_google_url, google_url()); 823 EXPECT_EQ(new_google_url, google_url());
767 EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL()); 824 EXPECT_EQ(GURL("https://www.google.co.uk/"), GetLastPromptedGoogleURL());
768 EXPECT_TRUE(GetInfoBar(1) == NULL); 825 EXPECT_TRUE(GetMapEntry(1) == NULL);
769 } 826 }
770 827
771 TEST_F(GoogleURLTrackerTest, ResetInfobarGoogleURLs) { 828 TEST_F(GoogleURLTrackerTest, ResetInfoBarGoogleURLs) {
772 RequestServerCheck(); 829 RequestServerCheck();
773 FinishSleep(); 830 FinishSleep();
774 MockSearchDomainCheckResponse(google_url().spec()); 831 MockSearchDomainCheckResponse(google_url().spec());
775 832
776 NotifyIPAddressChanged(); 833 NotifyIPAddressChanged();
777 MockSearchDomainCheckResponse("http://www.google.co.uk/"); 834 MockSearchDomainCheckResponse("http://www.google.co.uk/");
778 SetNavigationPending(1, true); 835 SetNavigationPending(1, true);
779 TestInfoBarDelegate* infobar = GetInfoBar(1); 836 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
837 GoogleURLTrackerInfoBarDelegate* infobar = GetInfoBar(1);
780 ASSERT_FALSE(infobar == NULL); 838 ASSERT_FALSE(infobar == NULL);
781 EXPECT_EQ(GURL("http://www.google.co.uk/"), infobar->new_google_url()); 839 EXPECT_EQ(GURL("http://www.google.co.uk/"), fetched_google_url());
782 840
783 // If while an infobar is pending we fetch a new URL that differs from the 841 // If while an infobar is showing we fetch a new URL that differs from the
784 // infobar's only by scheme, the infobar should stay pending but have its 842 // infobar's only by scheme, the infobar should stay showing.
785 // Google URL reset.
786 NotifyIPAddressChanged(); 843 NotifyIPAddressChanged();
787 MockSearchDomainCheckResponse("https://www.google.co.uk/"); 844 MockSearchDomainCheckResponse("https://www.google.co.uk/");
788 TestInfoBarDelegate* new_infobar = GetInfoBar(1); 845 EXPECT_EQ(infobar, GetInfoBar(1));
789 ASSERT_FALSE(new_infobar == NULL); 846 EXPECT_EQ(GURL("https://www.google.co.uk/"), fetched_google_url());
790 EXPECT_EQ(infobar, new_infobar);
791 EXPECT_EQ(GURL("https://www.google.co.uk/"), new_infobar->new_google_url());
792
793 // Same with an infobar that is showing.
794 CommitSearch(1, GURL("http://www.google.com/search?q=test"));
795 EXPECT_TRUE(infobar->showing());
796 NotifyIPAddressChanged();
797 MockSearchDomainCheckResponse("http://www.google.co.uk/");
798 new_infobar = GetInfoBar(1);
799 ASSERT_FALSE(new_infobar == NULL);
800 EXPECT_EQ(infobar, new_infobar);
801 EXPECT_EQ(GURL("http://www.google.co.uk/"), infobar->new_google_url());
802 EXPECT_TRUE(infobar->showing());
803 } 847 }
804 848
805 TEST_F(GoogleURLTrackerTest, NavigationsAfterPendingSearch) { 849 TEST_F(GoogleURLTrackerTest, NavigationsAfterPendingSearch) {
806 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 850 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
807 RequestServerCheck(); 851 RequestServerCheck();
808 FinishSleep(); 852 FinishSleep();
809 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 853 MockSearchDomainCheckResponse("http://www.google.co.jp/");
810 854
811 // A pending non-search after a pending search should close the infobar. 855 // A pending non-search after a pending search should delete the map entry.
812 SetNavigationPending(1, true); 856 SetNavigationPending(1, true);
813 TestInfoBarDelegate* infobar = GetInfoBar(1); 857 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(1);
814 ASSERT_FALSE(infobar == NULL); 858 ASSERT_FALSE(map_entry == NULL);
815 EXPECT_FALSE(infobar->showing()); 859 EXPECT_FALSE(map_entry->has_infobar());
816 SetNavigationPending(1, false); 860 SetNavigationPending(1, false);
817 infobar = GetInfoBar(1); 861 EXPECT_TRUE(GetMapEntry(1) == NULL);
818 EXPECT_TRUE(infobar == NULL);
819 862
820 // A pending search after a pending search should leave the infobar alive. 863 // A pending search after a pending search should leave the map entry alive.
821 SetNavigationPending(1, true); 864 SetNavigationPending(1, true);
822 infobar = GetInfoBar(1); 865 map_entry = GetMapEntry(1);
823 ASSERT_FALSE(infobar == NULL); 866 ASSERT_FALSE(map_entry == NULL);
824 EXPECT_FALSE(infobar->showing()); 867 EXPECT_FALSE(map_entry->has_infobar());
825 SetNavigationPending(1, true); 868 SetNavigationPending(1, true);
826 TestInfoBarDelegate* new_infobar = GetInfoBar(1); 869 ASSERT_EQ(map_entry, GetMapEntry(1));
827 ASSERT_FALSE(new_infobar == NULL); 870 EXPECT_FALSE(map_entry->has_infobar());
828 EXPECT_EQ(infobar, new_infobar);
829 EXPECT_FALSE(infobar->showing());
830 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 871 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
831 872
832 // Committing this search should show the infobar. 873 // Committing this search should show an infobar.
833 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test2")); 874 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test2"));
834 EXPECT_TRUE(infobar->showing()); 875 EXPECT_TRUE(map_entry->has_infobar());
835 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 876 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
836 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 877 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
837 EXPECT_FALSE(observer_->notified()); 878 EXPECT_FALSE(observer_notified());
838 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 879 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
839 } 880 }
840 881
841 TEST_F(GoogleURLTrackerTest, NavigationsAfterCommittedSearch) { 882 TEST_F(GoogleURLTrackerTest, NavigationsAfterCommittedSearch) {
842 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 883 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
843 RequestServerCheck(); 884 RequestServerCheck();
844 FinishSleep(); 885 FinishSleep();
845 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 886 MockSearchDomainCheckResponse("http://www.google.co.jp/");
846 SetNavigationPending(1, true); 887 SetNavigationPending(1, true);
847 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 888 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
848 TestInfoBarDelegate* infobar = GetInfoBar(1); 889 GoogleURLTrackerInfoBarDelegate* infobar = GetInfoBar(1);
849 ASSERT_FALSE(infobar == NULL); 890 ASSERT_FALSE(infobar == NULL);
850 EXPECT_TRUE(infobar->showing());
851 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 891 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
852 892
853 // A pending non-search on a visible infobar should basically do nothing. 893 // A pending non-search on a visible infobar should basically do nothing.
854 SetNavigationPending(1, false); 894 SetNavigationPending(1, false);
855 TestInfoBarDelegate* new_infobar = GetInfoBar(1); 895 ASSERT_EQ(infobar, GetInfoBar(1));
856 ASSERT_FALSE(new_infobar == NULL);
857 EXPECT_EQ(infobar, new_infobar);
858 EXPECT_TRUE(infobar->showing());
859 EXPECT_EQ(0, infobar->pending_id()); 896 EXPECT_EQ(0, infobar->pending_id());
860 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 897 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
861 898
862 // As should another pending non-search after the first. 899 // As should another pending non-search after the first.
863 SetNavigationPending(1, false); 900 SetNavigationPending(1, false);
864 new_infobar = GetInfoBar(1); 901 ASSERT_EQ(infobar, GetInfoBar(1));
865 ASSERT_FALSE(new_infobar == NULL);
866 EXPECT_EQ(infobar, new_infobar);
867 EXPECT_TRUE(infobar->showing());
868 EXPECT_EQ(0, infobar->pending_id()); 902 EXPECT_EQ(0, infobar->pending_id());
869 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 903 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
870 904
871 // Committing this non-search should close the infobar. The control flow in 905 // Committing this non-search should close the infobar. The control flow in
872 // these tests is not really comparable to in the real browser, but at least a 906 // these tests is not really comparable to in the real browser, but at least a
873 // few sanity-checks will be performed. 907 // few sanity-checks will be performed.
874 ASSERT_NO_FATAL_FAILURE(CommitNonSearch(1)); 908 ASSERT_NO_FATAL_FAILURE(CommitNonSearch(1));
875 new_infobar = GetInfoBar(1); 909 EXPECT_TRUE(GetMapEntry(1) == NULL);
876 EXPECT_TRUE(new_infobar == NULL);
877 910
878 // A pending search on a visible infobar should cause the infobar to listen 911 // A pending search on a visible infobar should cause the infobar to listen
879 // for the search to commit. 912 // for the search to commit.
880 SetNavigationPending(1, true); 913 SetNavigationPending(1, true);
881 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 914 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
882 infobar = GetInfoBar(1); 915 infobar = GetInfoBar(1);
883 ASSERT_FALSE(infobar == NULL); 916 ASSERT_FALSE(infobar == NULL);
884 EXPECT_TRUE(infobar->showing());
885 SetNavigationPending(1, true); 917 SetNavigationPending(1, true);
886 new_infobar = GetInfoBar(1); 918 ASSERT_EQ(infobar, GetInfoBar(1));
887 ASSERT_FALSE(new_infobar == NULL);
888 EXPECT_EQ(infobar, new_infobar);
889 EXPECT_TRUE(infobar->showing());
890 EXPECT_EQ(1, infobar->pending_id()); 919 EXPECT_EQ(1, infobar->pending_id());
891 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 920 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
892 921
893 // But a non-search after this should cancel that state. 922 // But a non-search after this should cancel that state.
894 SetNavigationPending(1, false); 923 SetNavigationPending(1, false);
895 new_infobar = GetInfoBar(1); 924 ASSERT_EQ(infobar, GetInfoBar(1));
896 ASSERT_FALSE(new_infobar == NULL);
897 EXPECT_EQ(infobar, new_infobar);
898 EXPECT_TRUE(infobar->showing());
899 EXPECT_EQ(0, infobar->pending_id()); 925 EXPECT_EQ(0, infobar->pending_id());
900 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 926 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
901 927
902 // Another pending search after the non-search should put us back into 928 // Another pending search after the non-search should put us back into
903 // "waiting for commit" mode. 929 // "waiting for commit" mode.
904 SetNavigationPending(1, true); 930 SetNavigationPending(1, true);
905 new_infobar = GetInfoBar(1); 931 ASSERT_EQ(infobar, GetInfoBar(1));
906 ASSERT_FALSE(new_infobar == NULL);
907 EXPECT_EQ(infobar, new_infobar);
908 EXPECT_TRUE(infobar->showing());
909 EXPECT_EQ(1, infobar->pending_id()); 932 EXPECT_EQ(1, infobar->pending_id());
910 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 933 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
911 934
912 // A second pending search after the first should not really change anything. 935 // A second pending search after the first should not really change anything.
913 SetNavigationPending(1, true); 936 SetNavigationPending(1, true);
914 new_infobar = GetInfoBar(1); 937 ASSERT_EQ(infobar, GetInfoBar(1));
915 ASSERT_FALSE(new_infobar == NULL);
916 EXPECT_EQ(infobar, new_infobar);
917 EXPECT_TRUE(infobar->showing());
918 EXPECT_EQ(1, infobar->pending_id()); 938 EXPECT_EQ(1, infobar->pending_id());
919 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 939 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
920 940
921 // Committing this search should change the visible infobar's search_url. 941 // Committing this search should change the visible infobar's search_url.
922 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test2")); 942 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test2"));
923 new_infobar = GetInfoBar(1); 943 ASSERT_EQ(infobar, GetInfoBar(1));
924 ASSERT_FALSE(new_infobar == NULL); 944 EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"),
925 EXPECT_EQ(infobar, new_infobar); 945 infobar->search_url());
926 EXPECT_TRUE(infobar->showing());
927 EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"), infobar->search_url( ));
928 EXPECT_EQ(0, infobar->pending_id()); 946 EXPECT_EQ(0, infobar->pending_id());
929 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 947 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
930 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); 948 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url());
931 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL()); 949 EXPECT_EQ(GURL("http://www.google.co.uk/"), GetLastPromptedGoogleURL());
932 EXPECT_FALSE(observer_->notified()); 950 EXPECT_FALSE(observer_notified());
933 } 951 }
934 952
935 TEST_F(GoogleURLTrackerTest, MultipleInfobars) { 953 TEST_F(GoogleURLTrackerTest, MultipleMapEntries) {
936 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 954 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
937 RequestServerCheck(); 955 RequestServerCheck();
938 FinishSleep(); 956 FinishSleep();
939 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 957 MockSearchDomainCheckResponse("http://www.google.co.jp/");
940 958
941 SetNavigationPending(1, true); 959 SetNavigationPending(1, true);
942 TestInfoBarDelegate* infobar = GetInfoBar(1); 960 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(1);
943 ASSERT_FALSE(infobar == NULL); 961 ASSERT_FALSE(map_entry == NULL);
944 EXPECT_FALSE(infobar->showing()); 962 EXPECT_FALSE(map_entry->has_infobar());
945 963
946 SetNavigationPending(2, true); 964 SetNavigationPending(2, true);
947 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2")); 965 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2"));
948 TestInfoBarDelegate* infobar2 = GetInfoBar(2); 966 GoogleURLTrackerInfoBarDelegate* infobar2 = GetInfoBar(2);
949 ASSERT_FALSE(infobar2 == NULL); 967 ASSERT_FALSE(infobar2 == NULL);
950 EXPECT_TRUE(infobar2->showing());
951 EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"), 968 EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test2"),
952 infobar2->search_url()); 969 infobar2->search_url());
953 970
954 SetNavigationPending(3, true); 971 SetNavigationPending(3, true);
955 TestInfoBarDelegate* infobar3 = GetInfoBar(3); 972 GoogleURLTrackerMapEntry* map_entry3 = GetMapEntry(3);
956 ASSERT_FALSE(infobar3 == NULL); 973 ASSERT_FALSE(map_entry3 == NULL);
957 EXPECT_FALSE(infobar3->showing()); 974 EXPECT_FALSE(map_entry3->has_infobar());
958 975
959 SetNavigationPending(4, true); 976 SetNavigationPending(4, true);
960 CommitSearch(4, GURL("http://www.google.co.uk/search?q=test4")); 977 CommitSearch(4, GURL("http://www.google.co.uk/search?q=test4"));
961 TestInfoBarDelegate* infobar4 = GetInfoBar(4); 978 GoogleURLTrackerInfoBarDelegate* infobar4 = GetInfoBar(4);
962 ASSERT_FALSE(infobar4 == NULL); 979 ASSERT_FALSE(infobar4 == NULL);
963 EXPECT_TRUE(infobar4->showing());
964 EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test4"), 980 EXPECT_EQ(GURL("http://www.google.co.uk/search?q=test4"),
965 infobar4->search_url()); 981 infobar4->search_url());
966 982
967 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 983 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
968 EXPECT_TRUE(infobar->showing()); 984 EXPECT_TRUE(map_entry->has_infobar());
969 985
970 infobar2->InfoBarClosed(); 986 infobar2->Close(false);
971 EXPECT_TRUE(GetInfoBar(2) == NULL); 987 EXPECT_TRUE(GetMapEntry(2) == NULL);
972 EXPECT_FALSE(observer_->notified()); 988 EXPECT_FALSE(observer_notified());
973 989
974 infobar4->Accept(); 990 infobar4->Accept();
975 EXPECT_TRUE(GetInfoBar(1) == NULL); 991 EXPECT_TRUE(GetMapEntry(1) == NULL);
976 EXPECT_TRUE(GetInfoBar(3) == NULL); 992 EXPECT_TRUE(GetMapEntry(3) == NULL);
977 EXPECT_TRUE(GetInfoBar(4) == NULL); 993 EXPECT_TRUE(GetMapEntry(4) == NULL);
978 EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url()); 994 EXPECT_EQ(GURL("http://www.google.co.jp/"), google_url());
979 EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL()); 995 EXPECT_EQ(GURL("http://www.google.co.jp/"), GetLastPromptedGoogleURL());
980 EXPECT_TRUE(observer_->notified()); 996 EXPECT_TRUE(observer_notified());
981 } 997 }
982 998
983 TEST_F(GoogleURLTrackerTest, IgnoreIrrelevantInstantNavigation) { 999 TEST_F(GoogleURLTrackerTest, IgnoreIrrelevantInstantNavigation) {
984 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 1000 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
985 RequestServerCheck(); 1001 RequestServerCheck();
986 FinishSleep(); 1002 FinishSleep();
987 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 1003 MockSearchDomainCheckResponse("http://www.google.co.jp/");
988 1004
989 // Starting a search pending on any tab should cause us to listen for pending 1005 // Starting a search pending on any tab should cause us to listen for pending
990 // and instant navigations on all tabs, but we should ignore these when they 1006 // and instant navigations on all tabs, but we should ignore these when they
991 // are for tabs that we don't care about. 1007 // are for tabs that we don't care about.
992 SetNavigationPending(1, true); 1008 SetNavigationPending(1, true);
993 TestInfoBarDelegate* infobar = GetInfoBar(1); 1009 EXPECT_FALSE(GetMapEntry(1) == NULL);
994 ASSERT_FALSE(infobar == NULL);
995 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 1010 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
996 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(2, false)); 1011 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(2, false));
997 1012
998 DoInstantNavigation(2, GURL()); 1013 DoInstantNavigation(2, GURL());
999 TestInfoBarDelegate* infobar2 = GetInfoBar(2); 1014 EXPECT_TRUE(GetMapEntry(2) == NULL);
1000 ASSERT_TRUE(infobar2 == NULL);
1001 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 1015 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
1002 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(2, false)); 1016 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(2, false));
1003 } 1017 }
1004 1018
1005 TEST_F(GoogleURLTrackerTest, IgnoreIrrelevantNavigation) { 1019 TEST_F(GoogleURLTrackerTest, IgnoreIrrelevantNavigation) {
1006 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/")); 1020 SetLastPromptedGoogleURL(GURL("http://www.google.co.uk/"));
1007 RequestServerCheck(); 1021 RequestServerCheck();
1008 FinishSleep(); 1022 FinishSleep();
1009 MockSearchDomainCheckResponse("http://www.google.co.jp/"); 1023 MockSearchDomainCheckResponse("http://www.google.co.jp/");
1010 1024
1011 // This tests a particularly gnarly sequence of events that used to cause us 1025 // This tests a particularly gnarly sequence of events that used to cause us
1012 // to erroneously listen for a non-search navigation to commit. 1026 // to erroneously listen for a non-search navigation to commit.
1013 SetNavigationPending(1, true); 1027 SetNavigationPending(1, true);
1014 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test")); 1028 CommitSearch(1, GURL("http://www.google.co.uk/search?q=test"));
1015 SetNavigationPending(2, true); 1029 SetNavigationPending(2, true);
1016 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2")); 1030 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2"));
1017 TestInfoBarDelegate* infobar = GetInfoBar(1); 1031 EXPECT_FALSE(GetInfoBar(1) == NULL);
1018 ASSERT_FALSE(infobar == NULL); 1032 GoogleURLTrackerInfoBarDelegate* infobar2 = GetInfoBar(2);
1019 EXPECT_TRUE(infobar->showing());
1020 TestInfoBarDelegate* infobar2 = GetInfoBar(2);
1021 ASSERT_FALSE(infobar2 == NULL); 1033 ASSERT_FALSE(infobar2 == NULL);
1022 EXPECT_TRUE(infobar2->showing());
1023 SetNavigationPending(1, true); 1034 SetNavigationPending(1, true);
1024 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 1035 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
1025 infobar2->InfoBarClosed(); 1036 infobar2->Close(false);
1026 SetNavigationPending(1, false); 1037 SetNavigationPending(1, false);
1027 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 1038 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
1028 } 1039 }
OLDNEW
« no previous file with comments | « chrome/browser/google/google_url_tracker_map_entry.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698