OLD | NEW |
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/browser/infobars/infobar.h" | 16 #include "chrome/browser/infobars/infobar.h" |
17 #include "chrome/browser/infobars/infobar_delegate.h" | 17 #include "chrome/browser/infobars/infobar_delegate.h" |
18 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
19 #include "chrome/test/base/testing_profile.h" | 19 #include "chrome/test/base/testing_profile.h" |
20 #include "content/public/browser/notification_service.h" | 20 #include "content/public/browser/notification_service.h" |
21 #include "content/public/test/test_browser_thread.h" | 21 #include "content/public/test/test_browser_thread_bundle.h" |
22 #include "net/url_request/test_url_fetcher_factory.h" | 22 #include "net/url_request/test_url_fetcher_factory.h" |
23 #include "net/url_request/url_fetcher.h" | 23 #include "net/url_request/url_fetcher.h" |
24 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
25 | 25 |
26 class GoogleURLTrackerTest; | 26 class GoogleURLTrackerTest; |
27 | 27 |
28 | |
29 namespace { | 28 namespace { |
30 | 29 |
31 // TestInfoBarDelegate -------------------------------------------------------- | 30 // TestInfoBarDelegate -------------------------------------------------------- |
32 | 31 |
33 class TestInfoBarDelegate : public GoogleURLTrackerInfoBarDelegate { | 32 class TestInfoBarDelegate : public GoogleURLTrackerInfoBarDelegate { |
34 public: | 33 public: |
35 // Creates a test delegate and returns it. Unlike the parent class, this does | 34 // Creates a test delegate and returns it. Unlike the parent class, this does |
36 // not add the infobar to |infobar_service|, since that "pointer" is really | 35 // not add the infobar to |infobar_service|, since that "pointer" is really |
37 // just a magic number. Thus there is no InfoBarService ownership of the | 36 // just a magic number. Thus there is no InfoBarService ownership of the |
38 // returned object; and since the caller doesn't own the returned object, we | 37 // returned object; and since the caller doesn't own the returned object, we |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 // object, we don't add the created infobar to it. Instead we will simulate | 241 // object, we don't add the created infobar to it. Instead we will simulate |
243 // any helper<->infobar interaction necessary. The returned object will be | 242 // any helper<->infobar interaction necessary. The returned object will be |
244 // cleaned up in OnInfoBarClosed(). | 243 // cleaned up in OnInfoBarClosed(). |
245 GoogleURLTrackerInfoBarDelegate* CreateTestInfoBar( | 244 GoogleURLTrackerInfoBarDelegate* CreateTestInfoBar( |
246 InfoBarService* infobar_service, | 245 InfoBarService* infobar_service, |
247 GoogleURLTracker* google_url_tracker, | 246 GoogleURLTracker* google_url_tracker, |
248 const GURL& search_url); | 247 const GURL& search_url); |
249 | 248 |
250 // These are required by the TestURLFetchers GoogleURLTracker will create (see | 249 // These are required by the TestURLFetchers GoogleURLTracker will create (see |
251 // test_url_fetcher_factory.h). | 250 // test_url_fetcher_factory.h). |
252 base::MessageLoop message_loop_; | 251 content::TestBrowserThreadBundle thread_bundle_; |
253 content::TestBrowserThread io_thread_; | |
254 // Creating this allows us to call | 252 // Creating this allows us to call |
255 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). | 253 // net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(). |
256 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; | 254 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
257 net::TestURLFetcherFactory fetcher_factory_; | 255 net::TestURLFetcherFactory fetcher_factory_; |
258 content::NotificationRegistrar registrar_; | 256 content::NotificationRegistrar registrar_; |
259 TestNotificationObserver observer_; | 257 TestNotificationObserver observer_; |
260 GoogleURLTrackerNavigationHelper* nav_helper_; | 258 GoogleURLTrackerNavigationHelper* nav_helper_; |
261 TestingProfile profile_; | 259 TestingProfile profile_; |
262 scoped_ptr<GoogleURLTracker> google_url_tracker_; | 260 scoped_ptr<GoogleURLTracker> google_url_tracker_; |
263 // This tracks the different "tabs" a test has "opened", so we can close them | 261 // This tracks the different "tabs" a test has "opened", so we can close them |
(...skipping 12 matching lines...) Expand all Loading... |
276 ASSERT_EQ(infobar, map_entry->infobar_delegate()); | 274 ASSERT_EQ(infobar, map_entry->infobar_delegate()); |
277 map_entry->Observe(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, | 275 map_entry->Observe(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
278 content::Source<InfoBarService>(infobar_service), | 276 content::Source<InfoBarService>(infobar_service), |
279 content::Details<InfoBarRemovedDetails>(&removed_details)); | 277 content::Details<InfoBarRemovedDetails>(&removed_details)); |
280 | 278 |
281 // Second, simulate the infobar container closing the infobar in response. | 279 // Second, simulate the infobar container closing the infobar in response. |
282 // This happens automatically as |infobar| goes out of scope. | 280 // This happens automatically as |infobar| goes out of scope. |
283 } | 281 } |
284 | 282 |
285 GoogleURLTrackerTest::GoogleURLTrackerTest() | 283 GoogleURLTrackerTest::GoogleURLTrackerTest() |
286 : message_loop_(base::MessageLoop::TYPE_IO), | 284 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) { |
287 io_thread_(content::BrowserThread::IO, &message_loop_) { | |
288 GoogleURLTrackerFactory::GetInstance()->RegisterUserPrefsOnBrowserContext( | 285 GoogleURLTrackerFactory::GetInstance()->RegisterUserPrefsOnBrowserContext( |
289 &profile_); | 286 &profile_); |
290 } | 287 } |
291 | 288 |
292 GoogleURLTrackerTest::~GoogleURLTrackerTest() { | 289 GoogleURLTrackerTest::~GoogleURLTrackerTest() { |
293 } | 290 } |
294 | 291 |
295 void GoogleURLTrackerTest::SetUp() { | 292 void GoogleURLTrackerTest::SetUp() { |
296 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); | 293 network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); |
297 // Ownership is passed to google_url_tracker_, but a weak pointer is kept; | 294 // Ownership is passed to google_url_tracker_, but a weak pointer is kept; |
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2")); | 1076 CommitSearch(2, GURL("http://www.google.co.uk/search?q=test2")); |
1080 EXPECT_FALSE(GetInfoBarDelegate(1) == NULL); | 1077 EXPECT_FALSE(GetInfoBarDelegate(1) == NULL); |
1081 GoogleURLTrackerInfoBarDelegate* delegate2 = GetInfoBarDelegate(2); | 1078 GoogleURLTrackerInfoBarDelegate* delegate2 = GetInfoBarDelegate(2); |
1082 ASSERT_FALSE(delegate2 == NULL); | 1079 ASSERT_FALSE(delegate2 == NULL); |
1083 SetNavigationPending(1, true); | 1080 SetNavigationPending(1, true); |
1084 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); | 1081 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, true)); |
1085 delegate2->Close(false); | 1082 delegate2->Close(false); |
1086 SetNavigationPending(1, false); | 1083 SetNavigationPending(1, false); |
1087 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); | 1084 ASSERT_NO_FATAL_FAILURE(ExpectListeningForCommit(1, false)); |
1088 } | 1085 } |
OLD | NEW |