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

Side by Side Diff: chrome/browser/ui/search/local_ntp_browsertest.cc

Issue 2819553003: Hook up LocalNtpSource to OneGoogleBarService (Closed)
Patch Set: Tests! Created 3 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
« no previous file with comments | « chrome/browser/search/one_google_bar/one_google_bar_service_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <memory>
6 #include <string>
7 #include <utility>
8 #include <vector>
9
5 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/memory/ptr_util.h"
12 #include "base/optional.h"
6 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
7 #include "chrome/browser/browser_process.h" 14 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/chrome_notification_types.h" 15 #include "chrome/browser/chrome_notification_types.h"
16 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/search/one_google_bar/one_google_bar_data.h"
18 #include "chrome/browser/search/one_google_bar/one_google_bar_fetcher.h"
19 #include "chrome/browser/search/one_google_bar/one_google_bar_service.h"
20 #include "chrome/browser/search/one_google_bar/one_google_bar_service_factory.h"
9 #include "chrome/browser/search/search.h" 21 #include "chrome/browser/search/search.h"
10 #include "chrome/browser/search_engines/template_url_service_factory.h" 22 #include "chrome/browser/search_engines/template_url_service_factory.h"
23 #include "chrome/browser/signin/signin_manager_factory.h"
11 #include "chrome/browser/ui/browser_commands.h" 24 #include "chrome/browser/ui/browser_commands.h"
12 #include "chrome/browser/ui/search/instant_test_utils.h" 25 #include "chrome/browser/ui/search/instant_test_utils.h"
13 #include "chrome/browser/ui/tabs/tab_strip_model.h" 26 #include "chrome/browser/ui/tabs/tab_strip_model.h"
14 #include "chrome/common/pref_names.h" 27 #include "chrome/common/pref_names.h"
15 #include "chrome/common/url_constants.h" 28 #include "chrome/common/url_constants.h"
16 #include "chrome/test/base/in_process_browser_test.h" 29 #include "chrome/test/base/in_process_browser_test.h"
17 #include "chrome/test/base/interactive_test_utils.h" 30 #include "chrome/test/base/interactive_test_utils.h"
18 #include "chrome/test/base/ui_test_utils.h" 31 #include "chrome/test/base/ui_test_utils.h"
32 #include "components/keyed_service/content/browser_context_dependency_manager.h"
19 #include "components/omnibox/browser/omnibox_edit_model.h" 33 #include "components/omnibox/browser/omnibox_edit_model.h"
20 #include "components/omnibox/browser/omnibox_view.h" 34 #include "components/omnibox/browser/omnibox_view.h"
21 #include "components/omnibox/common/omnibox_focus_state.h" 35 #include "components/omnibox/common/omnibox_focus_state.h"
22 #include "components/prefs/pref_service.h" 36 #include "components/prefs/pref_service.h"
23 #include "components/search_engines/template_url.h" 37 #include "components/search_engines/template_url.h"
24 #include "components/search_engines/template_url_data.h" 38 #include "components/search_engines/template_url_data.h"
25 #include "components/search_engines/template_url_service.h" 39 #include "components/search_engines/template_url_service.h"
26 #include "content/public/browser/navigation_entry.h" 40 #include "content/public/browser/navigation_entry.h"
27 #include "content/public/browser/notification_service.h" 41 #include "content/public/browser/notification_service.h"
28 #include "content/public/browser/web_contents.h" 42 #include "content/public/browser/web_contents.h"
29 #include "content/public/common/content_switches.h" 43 #include "content/public/common/content_switches.h"
30 #include "content/public/test/browser_test_utils.h" 44 #include "content/public/test/browser_test_utils.h"
31 #include "content/public/test/test_navigation_observer.h" 45 #include "content/public/test/test_navigation_observer.h"
32 #include "content/public/test/test_utils.h" 46 #include "content/public/test/test_utils.h"
33 #include "net/test/embedded_test_server/embedded_test_server.h" 47 #include "net/test/embedded_test_server/embedded_test_server.h"
34 #include "ui/base/resource/resource_bundle.h" 48 #include "ui/base/resource/resource_bundle.h"
35 #include "ui/gfx/geometry/point.h" 49 #include "ui/gfx/geometry/point.h"
36 #include "ui/gfx/geometry/rect.h" 50 #include "ui/gfx/geometry/rect.h"
37 #include "ui/gfx/geometry/vector2d.h" 51 #include "ui/gfx/geometry/vector2d.h"
38 52
39 namespace { 53 namespace {
40 54
55 content::WebContents* OpenNewTab(Browser* browser, const GURL& url) {
56 ui_test_utils::NavigateToURLWithDisposition(
57 browser, url, WindowOpenDisposition::NEW_FOREGROUND_TAB,
58 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
59 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
60 return browser->tab_strip_model()->GetActiveWebContents();
61 }
62
41 // Switches the browser language to French, and returns true iff successful. 63 // Switches the browser language to French, and returns true iff successful.
42 bool SwitchToFrench() { 64 bool SwitchToFrench() {
43 // Make sure the default language is not French. 65 // Make sure the default language is not French.
44 std::string default_locale = g_browser_process->GetApplicationLocale(); 66 std::string default_locale = g_browser_process->GetApplicationLocale();
45 EXPECT_NE("fr", default_locale); 67 EXPECT_NE("fr", default_locale);
46 68
47 // Switch browser language to French. 69 // Switch browser language to French.
48 std::string loaded_locale = 70 std::string loaded_locale =
49 ui::ResourceBundle::GetSharedInstance().ReloadLocaleResources("fr"); 71 ui::ResourceBundle::GetSharedInstance().ReloadLocaleResources("fr");
50 72
(...skipping 21 matching lines...) Expand all
72 InstantTestBase::Init(instant_url, ntp_url, false); 94 InstantTestBase::Init(instant_url, ntp_url, false);
73 } 95 }
74 }; 96 };
75 97
76 // This runs a bunch of pure JS-side tests, i.e. those that don't require any 98 // This runs a bunch of pure JS-side tests, i.e. those that don't require any
77 // interaction from the native side. 99 // interaction from the native side.
78 IN_PROC_BROWSER_TEST_F(LocalNTPTest, SimpleJavascriptTests) { 100 IN_PROC_BROWSER_TEST_F(LocalNTPTest, SimpleJavascriptTests) {
79 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 101 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser()));
80 FocusOmnibox(); 102 FocusOmnibox();
81 103
82 ui_test_utils::NavigateToURLWithDisposition( 104 content::WebContents* active_tab = OpenNewTab(browser(), ntp_url());
83 browser(), ntp_url(), WindowOpenDisposition::NEW_FOREGROUND_TAB,
84 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
85 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
86 content::WebContents* active_tab =
87 browser()->tab_strip_model()->GetActiveWebContents();
88 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 105 ASSERT_TRUE(search::IsInstantNTP(active_tab));
89 106
90 bool success = false; 107 bool success = false;
91 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!runSimpleTests()", &success)); 108 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!runSimpleTests()", &success));
92 EXPECT_TRUE(success); 109 EXPECT_TRUE(success);
93 } 110 }
94 111
95 IN_PROC_BROWSER_TEST_F(LocalNTPTest, EmbeddedSearchAPIOnlyAvailableOnNTP) { 112 IN_PROC_BROWSER_TEST_F(LocalNTPTest, EmbeddedSearchAPIOnlyAvailableOnNTP) {
96 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 113 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser()));
97 FocusOmnibox(); 114 FocusOmnibox();
98 115
99 // Open an NTP. 116 // Open an NTP.
100 ui_test_utils::NavigateToURLWithDisposition( 117 content::WebContents* active_tab = OpenNewTab(browser(), ntp_url());
101 browser(), ntp_url(), WindowOpenDisposition::NEW_FOREGROUND_TAB,
102 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
103 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
104 content::WebContents* active_tab =
105 browser()->tab_strip_model()->GetActiveWebContents();
106 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 118 ASSERT_TRUE(search::IsInstantNTP(active_tab));
107 // Check that the embeddedSearch API is available. 119 // Check that the embeddedSearch API is available.
108 bool result = false; 120 bool result = false;
109 ASSERT_TRUE( 121 ASSERT_TRUE(
110 GetBoolFromJS(active_tab, "!!window.chrome.embeddedSearch", &result)); 122 GetBoolFromJS(active_tab, "!!window.chrome.embeddedSearch", &result));
111 EXPECT_TRUE(result); 123 EXPECT_TRUE(result);
112 124
113 // Navigate somewhere else in the same tab. 125 // Navigate somewhere else in the same tab.
114 ui_test_utils::NavigateToURLWithDisposition( 126 ui_test_utils::NavigateToURLWithDisposition(
115 browser(), other_url(), WindowOpenDisposition::CURRENT_TAB, 127 browser(), other_url(), WindowOpenDisposition::CURRENT_TAB,
(...skipping 30 matching lines...) Expand all
146 // Now the API should be available again. 158 // Now the API should be available again.
147 ASSERT_TRUE( 159 ASSERT_TRUE(
148 GetBoolFromJS(active_tab, "!!window.chrome.embeddedSearch", &result)); 160 GetBoolFromJS(active_tab, "!!window.chrome.embeddedSearch", &result));
149 EXPECT_TRUE(result); 161 EXPECT_TRUE(result);
150 } 162 }
151 163
152 IN_PROC_BROWSER_TEST_F(LocalNTPTest, FakeboxRedirectsToOmnibox) { 164 IN_PROC_BROWSER_TEST_F(LocalNTPTest, FakeboxRedirectsToOmnibox) {
153 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 165 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser()));
154 FocusOmnibox(); 166 FocusOmnibox();
155 167
156 ui_test_utils::NavigateToURLWithDisposition( 168 content::WebContents* active_tab = OpenNewTab(browser(), ntp_url());
157 browser(), ntp_url(), WindowOpenDisposition::NEW_FOREGROUND_TAB,
158 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
159 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
160 content::WebContents* active_tab =
161 browser()->tab_strip_model()->GetActiveWebContents();
162 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 169 ASSERT_TRUE(search::IsInstantNTP(active_tab));
163 170
164 // This is required to make the mouse events we send below arrive at the right 171 // This is required to make the mouse events we send below arrive at the right
165 // place. It *should* be the default for all interactive_ui_tests anyway, but 172 // place. It *should* be the default for all interactive_ui_tests anyway, but
166 // on Mac it isn't; see crbug.com/641969. 173 // on Mac it isn't; see crbug.com/641969.
167 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 174 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
168 175
169 bool result = false; 176 bool result = false;
170 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!setupAdvancedTest()", &result)); 177 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!setupAdvancedTest()", &result));
171 ASSERT_TRUE(result); 178 ASSERT_TRUE(result);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 NOTREACHED(); 244 NOTREACHED();
238 return nullptr; 245 return nullptr;
239 } 246 }
240 247
241 } // namespace 248 } // namespace
242 249
243 IN_PROC_BROWSER_TEST_F(LocalNTPTest, LoadsIframe) { 250 IN_PROC_BROWSER_TEST_F(LocalNTPTest, LoadsIframe) {
244 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 251 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser()));
245 FocusOmnibox(); 252 FocusOmnibox();
246 253
247 ui_test_utils::NavigateToURLWithDisposition( 254 content::WebContents* active_tab = OpenNewTab(browser(), ntp_url());
248 browser(), ntp_url(), WindowOpenDisposition::NEW_FOREGROUND_TAB,
249 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
250 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
251 content::WebContents* active_tab =
252 browser()->tab_strip_model()->GetActiveWebContents();
253 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 255 ASSERT_TRUE(search::IsInstantNTP(active_tab));
254 256
255 content::DOMMessageQueue msg_queue; 257 content::DOMMessageQueue msg_queue;
256 258
257 bool result = false; 259 bool result = false;
258 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!setupAdvancedTest(true)", &result)); 260 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!setupAdvancedTest(true)", &result));
259 ASSERT_TRUE(result); 261 ASSERT_TRUE(result);
260 262
261 // Wait for the MV iframe to load. 263 // Wait for the MV iframe to load.
262 std::string message; 264 std::string message;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 320
319 g_browser_process->SetApplicationLocale(loaded_locale); 321 g_browser_process->SetApplicationLocale(loaded_locale);
320 PrefService* prefs = g_browser_process->local_state(); 322 PrefService* prefs = g_browser_process->local_state();
321 prefs->SetString(prefs::kApplicationLocale, loaded_locale); 323 prefs->SetString(prefs::kApplicationLocale, loaded_locale);
322 324
323 // Setup Instant. 325 // Setup Instant.
324 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); 326 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser()));
325 FocusOmnibox(); 327 FocusOmnibox();
326 328
327 // Open a new tab. 329 // Open a new tab.
328 ui_test_utils::NavigateToURLWithDisposition( 330 content::WebContents* active_tab =
329 browser(), GURL(chrome::kChromeUINewTabURL), 331 OpenNewTab(browser(), GURL(chrome::kChromeUINewTabURL));
330 WindowOpenDisposition::NEW_FOREGROUND_TAB,
331 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
332 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
333 332
334 // Verify that the NTP is in French. 333 // Verify that the NTP is in French.
335 content::WebContents* active_tab =
336 browser()->tab_strip_model()->GetActiveWebContents();
337 EXPECT_EQ(base::ASCIIToUTF16("Nouvel onglet"), active_tab->GetTitle()); 334 EXPECT_EQ(base::ASCIIToUTF16("Nouvel onglet"), active_tab->GetTitle());
338 } 335 }
339 336
340 // In contrast to LocalNTPTest, this one doesn't set up any special NTP 337 // In contrast to LocalNTPTest, this one doesn't set up any special NTP
341 // wrangling. It just turns on the local NTP. 338 // wrangling. It just turns on the local NTP.
342 class LocalNTPSmokeTest : public InProcessBrowserTest { 339 class LocalNTPSmokeTest : public InProcessBrowserTest {
343 public: 340 public:
344 LocalNTPSmokeTest() {} 341 LocalNTPSmokeTest() {}
345 342
346 protected: 343 protected:
(...skipping 10 matching lines...) Expand all
357 TemplateURLService* template_url_service = 354 TemplateURLService* template_url_service =
358 TemplateURLServiceFactory::GetForProfile(browser()->profile()); 355 TemplateURLServiceFactory::GetForProfile(browser()->profile());
359 TemplateURL* template_url = 356 TemplateURL* template_url =
360 template_url_service->Add(base::MakeUnique<TemplateURL>(data)); 357 template_url_service->Add(base::MakeUnique<TemplateURL>(data));
361 template_url_service->SetUserSelectedDefaultSearchProvider(template_url); 358 template_url_service->SetUserSelectedDefaultSearchProvider(template_url);
362 } 359 }
363 }; 360 };
364 361
365 IN_PROC_BROWSER_TEST_F(LocalNTPSmokeTest, GoogleNTPLoadsWithoutError) { 362 IN_PROC_BROWSER_TEST_F(LocalNTPSmokeTest, GoogleNTPLoadsWithoutError) {
366 // Open a new blank tab. 363 // Open a new blank tab.
367 ui_test_utils::NavigateToURLWithDisposition( 364 content::WebContents* active_tab = OpenNewTab(browser(), GURL("about:blank"));
368 browser(), GURL("about:blank"), WindowOpenDisposition::NEW_FOREGROUND_TAB,
369 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
370 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
371 content::WebContents* active_tab =
372 browser()->tab_strip_model()->GetActiveWebContents();
373 ASSERT_FALSE(search::IsInstantNTP(active_tab)); 365 ASSERT_FALSE(search::IsInstantNTP(active_tab));
374 366
375 // Attach a console observer, listening for any message ("*" pattern). 367 // Attach a console observer, listening for any message ("*" pattern).
376 content::ConsoleObserverDelegate console_observer(active_tab, "*"); 368 content::ConsoleObserverDelegate console_observer(active_tab, "*");
377 active_tab->SetDelegate(&console_observer); 369 active_tab->SetDelegate(&console_observer);
378 370
379 // Navigate to the NTP. 371 // Navigate to the NTP.
380 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL)); 372 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
381 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 373 ASSERT_TRUE(search::IsInstantNTP(active_tab));
382 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), 374 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
383 active_tab->GetController().GetVisibleEntry()->GetURL()); 375 active_tab->GetController().GetVisibleEntry()->GetURL());
384 376
385 // We shouldn't have gotten any console error messages. 377 // We shouldn't have gotten any console error messages.
386 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message(); 378 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message();
387 } 379 }
388 380
389 IN_PROC_BROWSER_TEST_F(LocalNTPSmokeTest, NonGoogleNTPLoadsWithoutError) { 381 IN_PROC_BROWSER_TEST_F(LocalNTPSmokeTest, NonGoogleNTPLoadsWithoutError) {
390 SetUserSelectedDefaultSearchProvider("https://www.example.com"); 382 SetUserSelectedDefaultSearchProvider("https://www.example.com");
391 383
392 // Open a new blank tab. 384 // Open a new blank tab.
393 ui_test_utils::NavigateToURLWithDisposition( 385 content::WebContents* active_tab = OpenNewTab(browser(), GURL("about:blank"));
394 browser(), GURL("about:blank"), WindowOpenDisposition::NEW_FOREGROUND_TAB,
395 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
396 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
397 content::WebContents* active_tab =
398 browser()->tab_strip_model()->GetActiveWebContents();
399 ASSERT_FALSE(search::IsInstantNTP(active_tab)); 386 ASSERT_FALSE(search::IsInstantNTP(active_tab));
400 387
401 // Attach a console observer, listening for any message ("*" pattern). 388 // Attach a console observer, listening for any message ("*" pattern).
402 content::ConsoleObserverDelegate console_observer(active_tab, "*"); 389 content::ConsoleObserverDelegate console_observer(active_tab, "*");
403 active_tab->SetDelegate(&console_observer); 390 active_tab->SetDelegate(&console_observer);
404 391
405 // Navigate to the NTP. 392 // Navigate to the NTP.
406 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL)); 393 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
407 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 394 ASSERT_TRUE(search::IsInstantNTP(active_tab));
408 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), 395 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
409 active_tab->GetController().GetVisibleEntry()->GetURL()); 396 active_tab->GetController().GetVisibleEntry()->GetURL());
410 397
411 // We shouldn't have gotten any console error messages. 398 // We shouldn't have gotten any console error messages.
412 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message(); 399 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message();
413 } 400 }
414 401
415 IN_PROC_BROWSER_TEST_F(LocalNTPSmokeTest, FrenchGoogleNTPLoadsWithoutError) { 402 IN_PROC_BROWSER_TEST_F(LocalNTPSmokeTest, FrenchGoogleNTPLoadsWithoutError) {
416 if (!SwitchToFrench()) { 403 if (!SwitchToFrench()) {
417 LOG(ERROR) << "Failed switching to French language, aborting test."; 404 LOG(ERROR) << "Failed switching to French language, aborting test.";
418 return; 405 return;
419 } 406 }
420 407
421 // Open a new blank tab. 408 // Open a new blank tab.
422 ui_test_utils::NavigateToURLWithDisposition( 409 content::WebContents* active_tab = OpenNewTab(browser(), GURL("about:blank"));
423 browser(), GURL("about:blank"), WindowOpenDisposition::NEW_FOREGROUND_TAB,
424 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB |
425 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
426 content::WebContents* active_tab =
427 browser()->tab_strip_model()->GetActiveWebContents();
428 ASSERT_FALSE(search::IsInstantNTP(active_tab)); 410 ASSERT_FALSE(search::IsInstantNTP(active_tab));
429 411
430 // Attach a console observer, listening for any message ("*" pattern). 412 // Attach a console observer, listening for any message ("*" pattern).
431 content::ConsoleObserverDelegate console_observer(active_tab, "*"); 413 content::ConsoleObserverDelegate console_observer(active_tab, "*");
432 active_tab->SetDelegate(&console_observer); 414 active_tab->SetDelegate(&console_observer);
433 415
434 // Navigate to the NTP. 416 // Navigate to the NTP.
435 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL)); 417 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
436 ASSERT_TRUE(search::IsInstantNTP(active_tab)); 418 ASSERT_TRUE(search::IsInstantNTP(active_tab));
437 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), 419 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
438 active_tab->GetController().GetVisibleEntry()->GetURL()); 420 active_tab->GetController().GetVisibleEntry()->GetURL());
439 // Make sure it's actually in French. 421 // Make sure it's actually in French.
440 ASSERT_EQ(base::ASCIIToUTF16("Nouvel onglet"), active_tab->GetTitle()); 422 ASSERT_EQ(base::ASCIIToUTF16("Nouvel onglet"), active_tab->GetTitle());
441 423
442 // We shouldn't have gotten any console error messages. 424 // We shouldn't have gotten any console error messages.
443 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message(); 425 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message();
444 } 426 }
427
428 // A simple fake implementation of OneGoogleBarFetcher that immediately returns
429 // a pre-configured OneGoogleBarData, which is null by default.
430 class FakeOneGoogleBarFetcher : public OneGoogleBarFetcher {
431 public:
432 void Fetch(OneGoogleCallback callback) override {
433 std::move(callback).Run(one_google_bar_data_);
434 }
435
436 void set_one_google_bar_data(
437 const base::Optional<OneGoogleBarData>& one_google_bar_data) {
438 one_google_bar_data_ = one_google_bar_data;
439 }
440
441 private:
442 base::Optional<OneGoogleBarData> one_google_bar_data_;
443 };
444
445 // TODO(treib): This inherits from InstantTestBase only for GetBoolFromJS, which
446 // should just be a global helper somewhere.
447 class LocalNTPOneGoogleBarSmokeTest : public InProcessBrowserTest,
448 public InstantTestBase {
449 public:
450 LocalNTPOneGoogleBarSmokeTest() {}
451
452 protected:
453 void SetUpCommandLine(base::CommandLine* cmdline) override {
454 cmdline->AppendSwitchASCII(switches::kEnableFeatures,
455 "UseGoogleLocalNtp,OneGoogleBarOnLocalNtp");
456 }
457
458 void SetUpInProcessBrowserTestFixture() override {
459 InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
460
461 will_create_browser_context_services_subscription_ =
462 BrowserContextDependencyManager::GetInstance()
463 ->RegisterWillCreateBrowserContextServicesCallbackForTesting(
464 base::Bind(&LocalNTPOneGoogleBarSmokeTest::
465 OnWillCreateBrowserContextServices,
466 base::Unretained(this)));
467 }
468
469 FakeOneGoogleBarFetcher* one_google_bar_fetcher() {
470 return static_cast<FakeOneGoogleBarFetcher*>(
471 OneGoogleBarServiceFactory::GetForProfile(browser()->profile())
472 ->fetcher_for_testing());
473 }
474
475 private:
476 static std::unique_ptr<KeyedService> CreateOneGoogleBarService(
477 content::BrowserContext* context) {
478 SigninManagerBase* signin_manager = SigninManagerFactory::GetForProfile(
479 Profile::FromBrowserContext(context));
480 return base::MakeUnique<OneGoogleBarService>(
481 signin_manager, base::MakeUnique<FakeOneGoogleBarFetcher>());
482 }
483
484 void OnWillCreateBrowserContextServices(content::BrowserContext* context) {
485 OneGoogleBarServiceFactory::GetInstance()->SetTestingFactory(
486 context, &LocalNTPOneGoogleBarSmokeTest::CreateOneGoogleBarService);
487 }
488
489 std::unique_ptr<
490 base::CallbackList<void(content::BrowserContext*)>::Subscription>
491 will_create_browser_context_services_subscription_;
492 };
493
494 IN_PROC_BROWSER_TEST_F(LocalNTPOneGoogleBarSmokeTest,
495 NTPLoadsWithoutErrorOnNetworkFailure) {
496 // Open a new blank tab.
497 content::WebContents* active_tab = OpenNewTab(browser(), GURL("about:blank"));
498 ASSERT_FALSE(search::IsInstantNTP(active_tab));
499
500 // Attach a console observer, listening for any message ("*" pattern).
501 content::ConsoleObserverDelegate console_observer(active_tab, "*");
502 active_tab->SetDelegate(&console_observer);
503
504 // Navigate to the NTP.
505 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
506 ASSERT_TRUE(search::IsInstantNTP(active_tab));
507 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
508 active_tab->GetController().GetVisibleEntry()->GetURL());
509
510 // We shouldn't have gotten any console error messages.
511 EXPECT_TRUE(console_observer.message().empty()) << console_observer.message();
512 }
513
514 IN_PROC_BROWSER_TEST_F(LocalNTPOneGoogleBarSmokeTest,
515 NTPLoadsWithOneGoogleBar) {
516 OneGoogleBarData data;
517 data.bar_html = "<div id='thebar'></div>";
518 data.in_head_script = "window.inHeadRan = true;";
519 data.after_bar_script = "window.afterBarRan = true;";
520 data.end_of_body_script = "console.log('ogb-done');";
521 one_google_bar_fetcher()->set_one_google_bar_data(data);
522
523 // Open a new blank tab.
524 content::WebContents* active_tab = OpenNewTab(browser(), GURL("about:blank"));
525 ASSERT_FALSE(search::IsInstantNTP(active_tab));
526
527 // Attach a console observer, listening for the "ogb-done" message, which
528 // indicates that the OGB has finished loading.
529 content::ConsoleObserverDelegate console_observer(active_tab, "ogb-done");
530 active_tab->SetDelegate(&console_observer);
531
532 // Navigate to the NTP.
533 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
534 ASSERT_TRUE(search::IsInstantNTP(active_tab));
535 ASSERT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
536 active_tab->GetController().GetVisibleEntry()->GetURL());
537 // Make sure the OGB is finished loading.
538 console_observer.Wait();
539
540 EXPECT_EQ("ogb-done", console_observer.message());
541
542 bool in_head_ran = false;
543 ASSERT_TRUE(GetBoolFromJS(active_tab, "!!window.inHeadRan", &in_head_ran));
544 EXPECT_TRUE(in_head_ran);
545 bool after_bar_ran = false;
546 ASSERT_TRUE(
547 GetBoolFromJS(active_tab, "!!window.afterBarRan", &after_bar_ran));
548 EXPECT_TRUE(after_bar_ran);
549 }
OLDNEW
« no previous file with comments | « chrome/browser/search/one_google_bar/one_google_bar_service_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698