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

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

Issue 285193002: Create GoogleURLTrackerClient interface and //chrome implementation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add header Created 6 years, 7 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
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/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "chrome/browser/chrome_notification_types.h" 12 #include "chrome/browser/chrome_notification_types.h"
13 #include "chrome/browser/google/google_url_tracker_factory.h" 13 #include "chrome/browser/google/google_url_tracker_factory.h"
14 #include "chrome/browser/google/google_url_tracker_infobar_delegate.h" 14 #include "chrome/browser/google/google_url_tracker_infobar_delegate.h"
15 #include "chrome/browser/google/google_url_tracker_navigation_helper.h" 15 #include "chrome/browser/google/google_url_tracker_navigation_helper.h"
16 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
17 #include "chrome/test/base/testing_profile.h" 17 #include "chrome/test/base/testing_profile.h"
18 #include "components/google/core/browser/google_url_tracker_client.h"
18 #include "components/infobars/core/infobar.h" 19 #include "components/infobars/core/infobar.h"
19 #include "components/infobars/core/infobar_delegate.h" 20 #include "components/infobars/core/infobar_delegate.h"
20 #include "content/public/browser/notification_service.h" 21 #include "content/public/browser/notification_service.h"
21 #include "content/public/test/test_browser_thread_bundle.h" 22 #include "content/public/test/test_browser_thread_bundle.h"
22 #include "net/url_request/test_url_fetcher_factory.h" 23 #include "net/url_request/test_url_fetcher_factory.h"
23 #include "net/url_request/url_fetcher.h" 24 #include "net/url_request/url_fetcher.h"
24 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
25 26
26 class GoogleURLTrackerTest; 27 class GoogleURLTrackerTest;
27 28
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 88 }
88 89
89 void TestNotificationObserver::Observe( 90 void TestNotificationObserver::Observe(
90 int type, 91 int type,
91 const content::NotificationSource& source, 92 const content::NotificationSource& source,
92 const content::NotificationDetails& details) { 93 const content::NotificationDetails& details) {
93 notified_ = true; 94 notified_ = true;
94 } 95 }
95 96
96 97
98 // TestGoogleURLTrackerClient -------------------------------------
Peter Kasting 2014/05/14 23:30:28 Tiny nit: Can you make all the lines of dashes in
blundell 2014/05/15 07:58:03 Done.
99
100 class TestGoogleURLTrackerClient
101 : public GoogleURLTrackerClient {
Peter Kasting 2014/05/14 23:30:28 Nit: Linebreak not necessary
blundell 2014/05/15 07:58:03 Done.
102 public:
103 TestGoogleURLTrackerClient();
104 virtual ~TestGoogleURLTrackerClient();
105
106 virtual void SetGoogleURLTracker(GoogleURLTracker* tracker) OVERRIDE;
107 virtual void SetListeningForNavigationStart(bool listen) OVERRIDE;
108 virtual bool IsListeningForNavigationStart() OVERRIDE;
109
110 private:
111 GoogleURLTracker* tracker_;
112 bool observe_nav_start_;
113 };
Peter Kasting 2014/05/14 23:30:28 Nit: DISALLOW_COPY_AND_ASSIGN
blundell 2014/05/15 07:58:03 Done.
114
115 TestGoogleURLTrackerClient::TestGoogleURLTrackerClient()
116 : tracker_(NULL),
117 observe_nav_start_(false) {
118 }
119
120 TestGoogleURLTrackerClient::
121 ~TestGoogleURLTrackerClient() {
Peter Kasting 2014/05/14 23:30:28 Nit: Linebreak not necessary
blundell 2014/05/15 07:58:03 Done.
122 }
123
124 void TestGoogleURLTrackerClient::SetGoogleURLTracker(
125 GoogleURLTracker* tracker) {
126 tracker_ = tracker;
Peter Kasting 2014/05/14 23:30:28 Since both GoogleURLTrackerClient implementations
blundell 2014/05/15 07:58:03 Done.
127 }
128
129 void TestGoogleURLTrackerClient::SetListeningForNavigationStart(
130 bool listen) {
131 observe_nav_start_ = listen;
132 }
133
134 bool TestGoogleURLTrackerClient::IsListeningForNavigationStart() {
135 return observe_nav_start_;
136 }
137
97 // TestGoogleURLTrackerNavigationHelper ------------------------------------- 138 // TestGoogleURLTrackerNavigationHelper -------------------------------------
98 139
99 class TestGoogleURLTrackerNavigationHelper 140 class TestGoogleURLTrackerNavigationHelper
100 : public GoogleURLTrackerNavigationHelper { 141 : public GoogleURLTrackerNavigationHelper {
101 public: 142 public:
102 TestGoogleURLTrackerNavigationHelper(); 143 TestGoogleURLTrackerNavigationHelper();
103 virtual ~TestGoogleURLTrackerNavigationHelper(); 144 virtual ~TestGoogleURLTrackerNavigationHelper();
104 145
105 virtual void SetGoogleURLTracker(GoogleURLTracker* tracker) OVERRIDE; 146 virtual void SetGoogleURLTracker(GoogleURLTracker* tracker) OVERRIDE;
106 virtual void SetListeningForNavigationStart(bool listen) OVERRIDE;
107 virtual bool IsListeningForNavigationStart() OVERRIDE;
108 virtual void SetListeningForNavigationCommit( 147 virtual void SetListeningForNavigationCommit(
109 const content::NavigationController* nav_controller, 148 const content::NavigationController* nav_controller,
110 bool listen) OVERRIDE; 149 bool listen) OVERRIDE;
111 virtual bool IsListeningForNavigationCommit( 150 virtual bool IsListeningForNavigationCommit(
112 const content::NavigationController* nav_controller) OVERRIDE; 151 const content::NavigationController* nav_controller) OVERRIDE;
113 virtual void SetListeningForTabDestruction( 152 virtual void SetListeningForTabDestruction(
114 const content::NavigationController* nav_controller, 153 const content::NavigationController* nav_controller,
115 bool listen) OVERRIDE; 154 bool listen) OVERRIDE;
116 virtual bool IsListeningForTabDestruction( 155 virtual bool IsListeningForTabDestruction(
117 const content::NavigationController* nav_controller) OVERRIDE; 156 const content::NavigationController* nav_controller) OVERRIDE;
118 157
119 private: 158 private:
120 GoogleURLTracker* tracker_; 159 GoogleURLTracker* tracker_;
121 bool observe_nav_start_;
122 std::set<const content::NavigationController*> 160 std::set<const content::NavigationController*>
123 nav_controller_commit_listeners_; 161 nav_controller_commit_listeners_;
124 std::set<const content::NavigationController*> 162 std::set<const content::NavigationController*>
125 nav_controller_tab_close_listeners_; 163 nav_controller_tab_close_listeners_;
126 }; 164 };
127 165
128 TestGoogleURLTrackerNavigationHelper::TestGoogleURLTrackerNavigationHelper() 166 TestGoogleURLTrackerNavigationHelper::TestGoogleURLTrackerNavigationHelper()
129 : tracker_(NULL), 167 : tracker_(NULL) {
130 observe_nav_start_(false) {
131 } 168 }
132 169
133 TestGoogleURLTrackerNavigationHelper:: 170 TestGoogleURLTrackerNavigationHelper::
134 ~TestGoogleURLTrackerNavigationHelper() { 171 ~TestGoogleURLTrackerNavigationHelper() {
135 } 172 }
136 173
137 void TestGoogleURLTrackerNavigationHelper::SetGoogleURLTracker( 174 void TestGoogleURLTrackerNavigationHelper::SetGoogleURLTracker(
138 GoogleURLTracker* tracker) { 175 GoogleURLTracker* tracker) {
139 tracker_ = tracker; 176 tracker_ = tracker;
140 } 177 }
141 178
142 void TestGoogleURLTrackerNavigationHelper::SetListeningForNavigationStart(
143 bool listen) {
144 observe_nav_start_ = listen;
145 }
146
147 bool TestGoogleURLTrackerNavigationHelper::IsListeningForNavigationStart() {
148 return observe_nav_start_;
149 }
150
151 void TestGoogleURLTrackerNavigationHelper::SetListeningForNavigationCommit( 179 void TestGoogleURLTrackerNavigationHelper::SetListeningForNavigationCommit(
152 const content::NavigationController* nav_controller, 180 const content::NavigationController* nav_controller,
153 bool listen) { 181 bool listen) {
154 if (listen) 182 if (listen)
155 nav_controller_commit_listeners_.insert(nav_controller); 183 nav_controller_commit_listeners_.insert(nav_controller);
156 else 184 else
157 nav_controller_commit_listeners_.erase(nav_controller); 185 nav_controller_commit_listeners_.erase(nav_controller);
158 } 186 }
159 187
160 bool TestGoogleURLTrackerNavigationHelper::IsListeningForNavigationCommit( 188 bool TestGoogleURLTrackerNavigationHelper::IsListeningForNavigationCommit(
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 274
247 // These are required by the TestURLFetchers GoogleURLTracker will create (see 275 // These are required by the TestURLFetchers GoogleURLTracker will create (see
248 // test_url_fetcher_factory.h). 276 // test_url_fetcher_factory.h).
249 content::TestBrowserThreadBundle thread_bundle_; 277 content::TestBrowserThreadBundle thread_bundle_;
250 // Creating this allows us to call 278 // Creating this allows us to call
251 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). 279 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests().
252 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; 280 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_;
253 net::TestURLFetcherFactory fetcher_factory_; 281 net::TestURLFetcherFactory fetcher_factory_;
254 content::NotificationRegistrar registrar_; 282 content::NotificationRegistrar registrar_;
255 TestNotificationObserver observer_; 283 TestNotificationObserver observer_;
284 GoogleURLTrackerClient* client_;
256 GoogleURLTrackerNavigationHelper* nav_helper_; 285 GoogleURLTrackerNavigationHelper* nav_helper_;
257 TestingProfile profile_; 286 TestingProfile profile_;
258 scoped_ptr<GoogleURLTracker> google_url_tracker_; 287 scoped_ptr<GoogleURLTracker> google_url_tracker_;
259 // This tracks the different "tabs" a test has "opened", so we can close them 288 // This tracks the different "tabs" a test has "opened", so we can close them
260 // properly before shutting down |google_url_tracker_|, which expects that. 289 // properly before shutting down |google_url_tracker_|, which expects that.
261 std::set<int> unique_ids_seen_; 290 std::set<int> unique_ids_seen_;
262 }; 291 };
263 292
264 void GoogleURLTrackerTest::OnInfoBarClosed( 293 void GoogleURLTrackerTest::OnInfoBarClosed(
265 scoped_ptr<infobars::InfoBar> infobar, 294 scoped_ptr<infobars::InfoBar> infobar,
(...skipping 18 matching lines...) Expand all
284 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) { 313 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {
285 GoogleURLTrackerFactory::GetInstance()-> 314 GoogleURLTrackerFactory::GetInstance()->
286 RegisterUserPrefsOnBrowserContextForTest(&profile_); 315 RegisterUserPrefsOnBrowserContextForTest(&profile_);
287 } 316 }
288 317
289 GoogleURLTrackerTest::~GoogleURLTrackerTest() { 318 GoogleURLTrackerTest::~GoogleURLTrackerTest() {
290 } 319 }
291 320
292 void GoogleURLTrackerTest::SetUp() { 321 void GoogleURLTrackerTest::SetUp() {
293 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); 322 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
294 // Ownership is passed to google_url_tracker_, but a weak pointer is kept; 323 // Ownership is passed to google_url_tracker_, but weak pointers are kept;
295 // this is safe since GoogleURLTracker keeps the observer for its lifetime. 324 // this is safe since GoogleURLTracker keeps these objects for its lifetime.
325 client_ = new TestGoogleURLTrackerClient();
296 nav_helper_ = new TestGoogleURLTrackerNavigationHelper(); 326 nav_helper_ = new TestGoogleURLTrackerNavigationHelper();
327 scoped_ptr<GoogleURLTrackerClient> client(client_);
297 scoped_ptr<GoogleURLTrackerNavigationHelper> nav_helper(nav_helper_); 328 scoped_ptr<GoogleURLTrackerNavigationHelper> nav_helper(nav_helper_);
298 google_url_tracker_.reset( 329 google_url_tracker_.reset(
299 new GoogleURLTracker(&profile_, nav_helper.Pass(), 330 new GoogleURLTracker(&profile_, client.Pass(), nav_helper.Pass(),
300 GoogleURLTracker::UNIT_TEST_MODE)); 331 GoogleURLTracker::UNIT_TEST_MODE));
301 google_url_tracker_->infobar_creator_ = base::Bind( 332 google_url_tracker_->infobar_creator_ = base::Bind(
302 &GoogleURLTrackerTest::CreateTestInfoBar, base::Unretained(this)); 333 &GoogleURLTrackerTest::CreateTestInfoBar, base::Unretained(this));
303 } 334 }
304 335
305 void GoogleURLTrackerTest::TearDown() { 336 void GoogleURLTrackerTest::TearDown() {
306 while (!unique_ids_seen_.empty()) 337 while (!unique_ids_seen_.empty())
307 CloseTab(*unique_ids_seen_.begin()); 338 CloseTab(*unique_ids_seen_.begin());
308 339
340 client_ = NULL;
309 nav_helper_ = NULL; 341 nav_helper_ = NULL;
310 google_url_tracker_.reset(); 342 google_url_tracker_.reset();
311 network_change_notifier_.reset(); 343 network_change_notifier_.reset();
Peter Kasting 2014/05/14 23:30:28 Why are any of these four lines necessary?
blundell 2014/05/15 07:58:03 Removed. On 2014/05/14 23:30:28, Peter Kasting wr
312 } 344 }
313 345
314 net::TestURLFetcher* GoogleURLTrackerTest::GetFetcher() { 346 net::TestURLFetcher* GoogleURLTrackerTest::GetFetcher() {
315 // This will return the last fetcher created. If no fetchers have been 347 // This will return the last fetcher created. If no fetchers have been
316 // created, we'll pass GetFetcherByID() "-1", and it will return NULL. 348 // created, we'll pass GetFetcherByID() "-1", and it will return NULL.
317 return fetcher_factory_.GetFetcherByID(google_url_tracker_->fetcher_id_ - 1); 349 return fetcher_factory_.GetFetcherByID(google_url_tracker_->fetcher_id_ - 1);
318 } 350 }
319 351
320 void GoogleURLTrackerTest::MockSearchDomainCheckResponse( 352 void GoogleURLTrackerTest::MockSearchDomainCheckResponse(
321 const std::string& domain) { 353 const std::string& domain) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 } 392 }
361 393
362 void GoogleURLTrackerTest::SetNavigationPending(intptr_t unique_id, 394 void GoogleURLTrackerTest::SetNavigationPending(intptr_t unique_id,
363 bool is_search) { 395 bool is_search) {
364 if (is_search) { 396 if (is_search) {
365 google_url_tracker_->SearchCommitted(); 397 google_url_tracker_->SearchCommitted();
366 // Note that the call above might not have actually registered a listener 398 // Note that the call above might not have actually registered a listener
367 // for navigation starts if the searchdomaincheck response was bogus. 399 // for navigation starts if the searchdomaincheck response was bogus.
368 } 400 }
369 unique_ids_seen_.insert(unique_id); 401 unique_ids_seen_.insert(unique_id);
370 if (nav_helper_->IsListeningForNavigationStart()) { 402 if (client_->IsListeningForNavigationStart()) {
371 google_url_tracker_->OnNavigationPending( 403 google_url_tracker_->OnNavigationPending(
372 reinterpret_cast<content::NavigationController*>(unique_id), 404 reinterpret_cast<content::NavigationController*>(unique_id),
373 reinterpret_cast<InfoBarService*>(unique_id), unique_id); 405 reinterpret_cast<InfoBarService*>(unique_id), unique_id);
374 } 406 }
375 } 407 }
376 408
377 void GoogleURLTrackerTest::CommitNonSearch(intptr_t unique_id) { 409 void GoogleURLTrackerTest::CommitNonSearch(intptr_t unique_id) {
378 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(unique_id); 410 GoogleURLTrackerMapEntry* map_entry = GetMapEntry(unique_id);
379 if (!map_entry) 411 if (!map_entry)
380 return; 412 return;
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2")); 1109 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2"));
1078 EXPECT_FALSE(GetInfoBarDelegate(1) == NULL); 1110 EXPECT_FALSE(GetInfoBarDelegate(1) == NULL);
1079 GoogleURLTrackerInfoBarDelegate* delegate2 = GetInfoBarDelegate(2); 1111 GoogleURLTrackerInfoBarDelegate* delegate2 = GetInfoBarDelegate(2);
1080 ASSERT_FALSE(delegate2 == NULL); 1112 ASSERT_FALSE(delegate2 == NULL);
1081 SetNavigationPending(1, true); 1113 SetNavigationPending(1, true);
1082 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); 1114 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true));
1083 delegate2->Close(false); 1115 delegate2->Close(false);
1084 SetNavigationPending(1, false); 1116 SetNavigationPending(1, false);
1085 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); 1117 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false));
1086 } 1118 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698