OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/google/core/browser/google_url_tracker.h" | 5 #include "components/google/core/browser/google_url_tracker.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/prefs/pref_registry_simple.h" | |
12 #include "base/prefs/pref_service.h" | 13 #include "base/prefs/pref_service.h" |
13 #include "chrome/browser/google/google_url_tracker_factory.h" | 14 #include "base/prefs/testing_pref_service.h" |
14 #include "chrome/test/base/testing_profile.h" | |
15 #include "components/google/core/browser/google_pref_names.h" | 15 #include "components/google/core/browser/google_pref_names.h" |
16 #include "components/google/core/browser/google_url_tracker_client.h" | 16 #include "components/google/core/browser/google_url_tracker_client.h" |
17 #include "components/google/core/browser/google_url_tracker_infobar_delegate.h" | 17 #include "components/google/core/browser/google_url_tracker_infobar_delegate.h" |
18 #include "components/google/core/browser/google_url_tracker_navigation_helper.h" | 18 #include "components/google/core/browser/google_url_tracker_navigation_helper.h" |
19 #include "components/infobars/core/infobar.h" | 19 #include "components/infobars/core/infobar.h" |
20 #include "components/infobars/core/infobar_delegate.h" | 20 #include "components/infobars/core/infobar_delegate.h" |
21 #include "content/public/test/test_browser_thread_bundle.h" | |
22 #include "net/url_request/test_url_fetcher_factory.h" | 21 #include "net/url_request/test_url_fetcher_factory.h" |
23 #include "net/url_request/url_fetcher.h" | 22 #include "net/url_request/url_fetcher.h" |
23 #include "net/url_request/url_request_test_util.h" | |
24 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
25 | 25 |
26 namespace { | 26 namespace { |
27 | 27 |
28 // TestCallbackListener --------------------------------------------------- | 28 // TestCallbackListener --------------------------------------------------- |
29 | 29 |
30 class TestCallbackListener { | 30 class TestCallbackListener { |
31 public: | 31 public: |
32 TestCallbackListener(); | 32 TestCallbackListener(); |
33 virtual ~TestCallbackListener(); | 33 virtual ~TestCallbackListener(); |
(...skipping 30 matching lines...) Expand all Loading... | |
64 google_url_updated_subscription_ = | 64 google_url_updated_subscription_ = |
65 google_url_tracker->RegisterCallback(base::Bind( | 65 google_url_tracker->RegisterCallback(base::Bind( |
66 &TestCallbackListener::OnGoogleURLUpdated, base::Unretained(this))); | 66 &TestCallbackListener::OnGoogleURLUpdated, base::Unretained(this))); |
67 } | 67 } |
68 | 68 |
69 | 69 |
70 // TestGoogleURLTrackerClient ------------------------------------------------- | 70 // TestGoogleURLTrackerClient ------------------------------------------------- |
71 | 71 |
72 class TestGoogleURLTrackerClient : public GoogleURLTrackerClient { | 72 class TestGoogleURLTrackerClient : public GoogleURLTrackerClient { |
73 public: | 73 public: |
74 explicit TestGoogleURLTrackerClient(Profile* profile_); | 74 explicit TestGoogleURLTrackerClient(PrefService* prefs_); |
75 virtual ~TestGoogleURLTrackerClient(); | 75 virtual ~TestGoogleURLTrackerClient(); |
76 | 76 |
77 virtual void SetListeningForNavigationStart(bool listen) OVERRIDE; | 77 virtual void SetListeningForNavigationStart(bool listen) OVERRIDE; |
78 virtual bool IsListeningForNavigationStart() OVERRIDE; | 78 virtual bool IsListeningForNavigationStart() OVERRIDE; |
79 virtual bool IsBackgroundNetworkingEnabled() OVERRIDE; | 79 virtual bool IsBackgroundNetworkingEnabled() OVERRIDE; |
80 virtual PrefService* GetPrefs() OVERRIDE; | 80 virtual PrefService* GetPrefs() OVERRIDE; |
81 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; | 81 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; |
82 | 82 |
83 private: | 83 private: |
84 Profile* profile_; | 84 PrefService* prefs_; |
85 scoped_refptr<net::TestURLRequestContextGetter> request_context_; | |
85 bool observe_nav_start_; | 86 bool observe_nav_start_; |
86 | 87 |
87 DISALLOW_COPY_AND_ASSIGN(TestGoogleURLTrackerClient); | 88 DISALLOW_COPY_AND_ASSIGN(TestGoogleURLTrackerClient); |
88 }; | 89 }; |
89 | 90 |
90 TestGoogleURLTrackerClient::TestGoogleURLTrackerClient(Profile* profile) | 91 TestGoogleURLTrackerClient::TestGoogleURLTrackerClient(PrefService* prefs) |
91 : profile_(profile), | 92 : prefs_(prefs), |
93 request_context_(new net::TestURLRequestContextGetter( | |
94 base::MessageLoopProxy::current())), | |
92 observe_nav_start_(false) { | 95 observe_nav_start_(false) { |
93 } | 96 } |
94 | 97 |
95 TestGoogleURLTrackerClient::~TestGoogleURLTrackerClient() { | 98 TestGoogleURLTrackerClient::~TestGoogleURLTrackerClient() { |
96 } | 99 } |
97 | 100 |
98 void TestGoogleURLTrackerClient::SetListeningForNavigationStart(bool listen) { | 101 void TestGoogleURLTrackerClient::SetListeningForNavigationStart(bool listen) { |
99 observe_nav_start_ = listen; | 102 observe_nav_start_ = listen; |
100 } | 103 } |
101 | 104 |
102 bool TestGoogleURLTrackerClient::IsListeningForNavigationStart() { | 105 bool TestGoogleURLTrackerClient::IsListeningForNavigationStart() { |
103 return observe_nav_start_; | 106 return observe_nav_start_; |
104 } | 107 } |
105 | 108 |
106 bool TestGoogleURLTrackerClient::IsBackgroundNetworkingEnabled() { | 109 bool TestGoogleURLTrackerClient::IsBackgroundNetworkingEnabled() { |
107 return true; | 110 return true; |
108 } | 111 } |
109 | 112 |
110 PrefService* TestGoogleURLTrackerClient::GetPrefs() { | 113 PrefService* TestGoogleURLTrackerClient::GetPrefs() { |
111 return profile_->GetPrefs(); | 114 return prefs_; |
112 } | 115 } |
113 | 116 |
114 net::URLRequestContextGetter* TestGoogleURLTrackerClient::GetRequestContext() { | 117 net::URLRequestContextGetter* TestGoogleURLTrackerClient::GetRequestContext() { |
115 return profile_->GetRequestContext(); | 118 return request_context_.get(); |
116 } | 119 } |
117 | 120 |
118 | 121 |
119 // TestGoogleURLTrackerNavigationHelper --------------------------------------- | 122 // TestGoogleURLTrackerNavigationHelper --------------------------------------- |
120 | 123 |
121 class TestGoogleURLTrackerNavigationHelper | 124 class TestGoogleURLTrackerNavigationHelper |
122 : public GoogleURLTrackerNavigationHelper { | 125 : public GoogleURLTrackerNavigationHelper { |
123 public: | 126 public: |
124 explicit TestGoogleURLTrackerNavigationHelper(GoogleURLTracker* tracker); | 127 explicit TestGoogleURLTrackerNavigationHelper(GoogleURLTracker* tracker); |
125 virtual ~TestGoogleURLTrackerNavigationHelper(); | 128 virtual ~TestGoogleURLTrackerNavigationHelper(); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
236 infobars::InfoBarManager* infobar_manager); | 239 infobars::InfoBarManager* infobar_manager); |
237 GoogleURLTrackerNavigationHelper* GetNavigationHelper( | 240 GoogleURLTrackerNavigationHelper* GetNavigationHelper( |
238 infobars::InfoBarManager* infobar_manager); | 241 infobars::InfoBarManager* infobar_manager); |
239 void ExpectDefaultURLs() const; | 242 void ExpectDefaultURLs() const; |
240 void ExpectListeningForCommit(infobars::InfoBarManager* infobar_manager, | 243 void ExpectListeningForCommit(infobars::InfoBarManager* infobar_manager, |
241 bool listening); | 244 bool listening); |
242 bool listener_notified() const { return listener_.notified(); } | 245 bool listener_notified() const { return listener_.notified(); } |
243 void clear_listener_notified() { listener_.clear_notified(); } | 246 void clear_listener_notified() { listener_.clear_notified(); } |
244 | 247 |
245 private: | 248 private: |
246 // These are required by the TestURLFetchers GoogleURLTracker will create (see | 249 base::MessageLoop message_loop_; |
247 // test_url_fetcher_factory.h). | 250 TestingPrefServiceSimple prefs_; |
248 content::TestBrowserThreadBundle thread_bundle_; | |
249 | 251 |
250 // Creating this allows us to call | 252 // Creating this allows us to call |
251 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). | 253 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). |
252 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; | 254 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
253 net::TestURLFetcherFactory fetcher_factory_; | 255 net::TestURLFetcherFactory fetcher_factory_; |
254 GoogleURLTrackerClient* client_; | 256 GoogleURLTrackerClient* client_; |
255 TestingProfile profile_; | |
256 scoped_ptr<GoogleURLTracker> google_url_tracker_; | 257 scoped_ptr<GoogleURLTracker> google_url_tracker_; |
257 TestCallbackListener listener_; | 258 TestCallbackListener listener_; |
258 // This tracks the different "tabs" a test has "opened", so we can close them | 259 // This tracks the different "tabs" a test has "opened", so we can close them |
259 // properly before shutting down |google_url_tracker_|, which expects that. | 260 // properly before shutting down |google_url_tracker_|, which expects that. |
260 std::set<infobars::InfoBarManager*> infobar_managers_seen_; | 261 std::set<infobars::InfoBarManager*> infobar_managers_seen_; |
261 }; | 262 }; |
262 | 263 |
263 GoogleURLTrackerTest::GoogleURLTrackerTest() | 264 GoogleURLTrackerTest::GoogleURLTrackerTest() { |
264 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) { | 265 prefs_.registry()->RegisterStringPref( |
Peter Kasting
2014/08/26 17:57:24
Curiosity: Do these changes imply that TestingProf
blundell
2014/09/12 12:48:08
No, the registration was previously happening via
| |
265 GoogleURLTrackerFactory::GetInstance()-> | 266 prefs::kLastKnownGoogleURL, |
266 RegisterUserPrefsOnBrowserContextForTest(&profile_); | 267 GoogleURLTracker::kDefaultGoogleHomepage); |
268 prefs_.registry()->RegisterStringPref( | |
269 prefs::kLastPromptedGoogleURL, | |
270 std::string()); | |
267 } | 271 } |
268 | 272 |
269 GoogleURLTrackerTest::~GoogleURLTrackerTest() { | 273 GoogleURLTrackerTest::~GoogleURLTrackerTest() { |
270 } | 274 } |
271 | 275 |
272 void GoogleURLTrackerTest::SetUp() { | 276 void GoogleURLTrackerTest::SetUp() { |
273 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); | 277 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); |
274 // Ownership is passed to google_url_tracker_, but a weak pointer is kept; | 278 // Ownership is passed to google_url_tracker_, but a weak pointer is kept; |
275 // this is safe since GoogleURLTracker keeps the client for its lifetime. | 279 // this is safe since GoogleURLTracker keeps the client for its lifetime. |
276 client_ = new TestGoogleURLTrackerClient(&profile_); | 280 client_ = new TestGoogleURLTrackerClient(&prefs_); |
277 scoped_ptr<GoogleURLTrackerClient> client(client_); | 281 scoped_ptr<GoogleURLTrackerClient> client(client_); |
278 google_url_tracker_.reset(new GoogleURLTracker( | 282 google_url_tracker_.reset(new GoogleURLTracker( |
279 client.Pass(), GoogleURLTracker::UNIT_TEST_MODE)); | 283 client.Pass(), GoogleURLTracker::UNIT_TEST_MODE)); |
280 } | 284 } |
281 | 285 |
282 void GoogleURLTrackerTest::TearDown() { | 286 void GoogleURLTrackerTest::TearDown() { |
283 while (!infobar_managers_seen_.empty()) | 287 while (!infobar_managers_seen_.empty()) |
284 CloseTab(*infobar_managers_seen_.begin()); | 288 CloseTab(*infobar_managers_seen_.begin()); |
285 google_url_tracker_->Shutdown(); | 289 google_url_tracker_->Shutdown(); |
286 } | 290 } |
(...skipping 28 matching lines...) Expand all Loading... | |
315 } | 319 } |
316 | 320 |
317 void GoogleURLTrackerTest::NotifyIPAddressChanged() { | 321 void GoogleURLTrackerTest::NotifyIPAddressChanged() { |
318 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); | 322 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
319 // For thread safety, the NCN queues tasks to do the actual notifications, so | 323 // For thread safety, the NCN queues tasks to do the actual notifications, so |
320 // we need to spin the message loop so the tracker will actually be notified. | 324 // we need to spin the message loop so the tracker will actually be notified. |
321 base::MessageLoop::current()->RunUntilIdle(); | 325 base::MessageLoop::current()->RunUntilIdle(); |
322 } | 326 } |
323 | 327 |
324 void GoogleURLTrackerTest::SetLastPromptedGoogleURL(const GURL& url) { | 328 void GoogleURLTrackerTest::SetLastPromptedGoogleURL(const GURL& url) { |
325 profile_.GetPrefs()->SetString(prefs::kLastPromptedGoogleURL, url.spec()); | 329 prefs_.SetString(prefs::kLastPromptedGoogleURL, url.spec()); |
326 } | 330 } |
327 | 331 |
328 GURL GoogleURLTrackerTest::GetLastPromptedGoogleURL() { | 332 GURL GoogleURLTrackerTest::GetLastPromptedGoogleURL() { |
329 return GURL(profile_.GetPrefs()->GetString(prefs::kLastPromptedGoogleURL)); | 333 return GURL(prefs_.GetString(prefs::kLastPromptedGoogleURL)); |
330 } | 334 } |
331 | 335 |
332 void GoogleURLTrackerTest::SetNavigationPending( | 336 void GoogleURLTrackerTest::SetNavigationPending( |
333 infobars::InfoBarManager* infobar_manager, | 337 infobars::InfoBarManager* infobar_manager, |
334 bool is_search) { | 338 bool is_search) { |
335 if (is_search) { | 339 if (is_search) { |
336 google_url_tracker_->SearchCommitted(); | 340 google_url_tracker_->SearchCommitted(); |
337 // Note that the call above might not have actually registered a listener | 341 // Note that the call above might not have actually registered a listener |
338 // for navigation starts if the searchdomaincheck response was bogus. | 342 // for navigation starts if the searchdomaincheck response was bogus. |
339 } | 343 } |
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1039 EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL); | 1043 EXPECT_FALSE(GetInfoBarDelegate(&infobar_manager) == NULL); |
1040 GoogleURLTrackerInfoBarDelegate* delegate2 = | 1044 GoogleURLTrackerInfoBarDelegate* delegate2 = |
1041 GetInfoBarDelegate(&infobar_manager2); | 1045 GetInfoBarDelegate(&infobar_manager2); |
1042 ASSERT_FALSE(delegate2 == NULL); | 1046 ASSERT_FALSE(delegate2 == NULL); |
1043 SetNavigationPending(&infobar_manager, true); | 1047 SetNavigationPending(&infobar_manager, true); |
1044 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true)); | 1048 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, true)); |
1045 delegate2->Close(false); | 1049 delegate2->Close(false); |
1046 SetNavigationPending(&infobar_manager, false); | 1050 SetNavigationPending(&infobar_manager, false); |
1047 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false)); | 1051 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(&infobar_manager, false)); |
1048 } | 1052 } |
OLD | NEW |