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

Side by Side Diff: chrome/browser/translate/translate_manager_browsertest.cc

Issue 1420093004: Straighten up Translate browser tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Let's try a less opinionated way. Created 5 years, 1 month 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 | « no previous file | chrome/browser/ui/browser_browsertest.cc » ('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 "components/translate/core/browser/translate_manager.h" 5 #include "components/translate/core/browser/translate_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/chrome_notification_types.h" 8 #include "chrome/browser/chrome_notification_types.h"
9 #include "chrome/browser/prefs/session_startup_pref.h" 9 #include "chrome/browser/prefs/session_startup_pref.h"
10 #include "chrome/browser/translate/chrome_translate_client.h" 10 #include "chrome/browser/translate/chrome_translate_client.h"
11 #include "chrome/browser/translate/cld_data_harness.h" 11 #include "chrome/browser/translate/cld_data_harness.h"
12 #include "chrome/browser/translate/cld_data_harness_factory.h" 12 #include "chrome/browser/translate/cld_data_harness_factory.h"
13 #include "chrome/browser/ui/browser.h" 13 #include "chrome/browser/ui/browser.h"
14 #include "chrome/browser/ui/tabs/tab_strip_model.h" 14 #include "chrome/browser/ui/tabs/tab_strip_model.h"
15 #include "chrome/test/base/in_process_browser_test.h" 15 #include "chrome/test/base/in_process_browser_test.h"
16 #include "chrome/test/base/ui_test_utils.h" 16 #include "chrome/test/base/ui_test_utils.h"
17 #include "components/translate/core/common/language_detection_details.h" 17 #include "components/translate/core/common/language_detection_details.h"
18 #include "content/public/browser/notification_service.h"
18 #include "url/gurl.h" 19 #include "url/gurl.h"
19 20
20 class TranslateManagerBrowserTest : public InProcessBrowserTest {}; 21 class TranslateManagerBrowserTest : public InProcessBrowserTest {
22 public:
23 TranslateManagerBrowserTest() {}
jochen (gone - plz use gerrit) 2015/10/26 15:41:36 please add a virtual dtor
dglazkov 2015/10/30 18:43:53 Done.
24
25 std::string GetLanguageFor(content::WebContents* web_contents) {
26 translate::LanguageDetectionDetails details;
27 content::Source<content::WebContents> source(web_contents);
28 language_detected_signal_->GetDetailsFor(source.map_key(), &details);
29 return details.adopted_language;
30 }
31
32 void WaitUntilLanguageDetected() {
33 language_detected_signal_->Wait();
34 }
35
36 void ResetObserver() {
37 language_detected_signal_.reset(new LangageDetectionObserver(
38 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
39 content::NotificationService::AllSources()));
40 }
41
42 protected:
43 // InProcessBrowserTest members.
44 void SetUp() override {
45 scoped_ptr<test::CldDataHarness> cld_data_harness =
46 test::CldDataHarnessFactory::Get()->CreateCldDataHarness();
47 ASSERT_NO_FATAL_FAILURE(cld_data_harness->Init());
48 InProcessBrowserTest::SetUp();
49 }
50 void SetUpOnMainThread() override {
51 ResetObserver();
52 InProcessBrowserTest::SetUpOnMainThread();
53 }
54
55 private:
56 using LangageDetectionObserver =
57 ui_test_utils::WindowedNotificationObserverWithDetails<
58 translate::LanguageDetectionDetails>;
59
60 scoped_ptr<LangageDetectionObserver> language_detected_signal_;
61 };
jochen (gone - plz use gerrit) 2015/10/26 15:41:36 disallow copy & assign
dglazkov 2015/10/30 18:43:53 This is not necessary, since the base class testin
62
63 // Tests that the CLD (Compact Language Detection) works properly.
64 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageLanguageDetection) {
65 ASSERT_TRUE(test_server()->Start());
66
67 // The InProcessBrowserTest opens a new tab, let's wait for that first.
68 WaitUntilLanguageDetected();
69
70 content::WebContents* current_web_contents =
71 browser()->tab_strip_model()->GetActiveWebContents();
72
73 std::string adopted_language = GetLanguageFor(current_web_contents);
74 EXPECT_EQ("und", adopted_language);
75
76 // Open a new tab with a page in English.
77 AddTabAtIndex(0, GURL(test_server()->GetURL("files/english_page.html")),
78 ui::PAGE_TRANSITION_TYPED);
79
80 ResetObserver();
81
82 current_web_contents = browser()->tab_strip_model()->GetActiveWebContents();
83 ChromeTranslateClient* chrome_translate_client =
84 ChromeTranslateClient::FromWebContents(current_web_contents);
85
86 WaitUntilLanguageDetected();
87 adopted_language = GetLanguageFor(current_web_contents);
88 EXPECT_EQ("en", adopted_language);
89 EXPECT_EQ("en",
90 chrome_translate_client->GetLanguageState().original_language());
91
92 ResetObserver();
93
94 // Now navigate to a page in French.
95 ui_test_utils::NavigateToURL(
96 browser(), GURL(test_server()->GetURL("files/french_page.html")));
97
98 WaitUntilLanguageDetected();
99 adopted_language = GetLanguageFor(current_web_contents);
100 EXPECT_EQ("fr", adopted_language);
101 EXPECT_EQ("fr",
102 chrome_translate_client->GetLanguageState().original_language());
103 }
21 104
22 // Test is flaky on Win http://crbug.com/166334 105 // Test is flaky on Win http://crbug.com/166334
23 #if defined(OS_WIN) 106 #if defined(OS_WIN)
24 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore 107 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore
25 #else 108 #else
26 #define MAYBE_PRE_TranslateSessionRestore PRE_TranslateSessionRestore 109 #define MAYBE_PRE_TranslateSessionRestore PRE_TranslateSessionRestore
27 #endif 110 #endif
28 // Test that session restore restores the translate infobar and other translate 111 // Test that session restore restores the translate infobar and other translate
29 // settings. 112 // settings.
30 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, 113 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
31 MAYBE_PRE_TranslateSessionRestore) { 114 MAYBE_PRE_TranslateSessionRestore) {
32 scoped_ptr<test::CldDataHarness> cld_data_harness =
33 test::CldDataHarnessFactory::Get()->CreateCldDataHarness();
34 ASSERT_NO_FATAL_FAILURE(cld_data_harness->Init());
35 SessionStartupPref pref(SessionStartupPref::LAST); 115 SessionStartupPref pref(SessionStartupPref::LAST);
36 SessionStartupPref::SetStartupPref(browser()->profile(), pref); 116 SessionStartupPref::SetStartupPref(browser()->profile(), pref);
37 117
118 WaitUntilLanguageDetected();
119
38 content::WebContents* current_web_contents = 120 content::WebContents* current_web_contents =
39 browser()->tab_strip_model()->GetActiveWebContents(); 121 browser()->tab_strip_model()->GetActiveWebContents();
40 ChromeTranslateClient* chrome_translate_client = 122 ChromeTranslateClient* chrome_translate_client =
41 ChromeTranslateClient::FromWebContents(current_web_contents); 123 ChromeTranslateClient::FromWebContents(current_web_contents);
42 content::Source<content::WebContents> source(current_web_contents);
43 124
44 ui_test_utils::WindowedNotificationObserverWithDetails< 125 std::string adopted_language = GetLanguageFor(current_web_contents);
45 translate::LanguageDetectionDetails> 126 EXPECT_EQ("und", adopted_language);
46 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 127
47 source); 128 ResetObserver();
48 129
49 GURL french_url = ui_test_utils::GetTestUrl( 130 GURL french_url = ui_test_utils::GetTestUrl(
50 base::FilePath(), base::FilePath(FILE_PATH_LITERAL("french_page.html"))); 131 base::FilePath(), base::FilePath(FILE_PATH_LITERAL("french_page.html")));
51 ui_test_utils::NavigateToURL(browser(), french_url); 132 ui_test_utils::NavigateToURL(browser(), french_url);
52 fr_language_detected_signal.Wait(); 133
53 translate::LanguageDetectionDetails details; 134 WaitUntilLanguageDetected();
54 EXPECT_TRUE(fr_language_detected_signal.GetDetailsFor( 135 adopted_language = GetLanguageFor(current_web_contents);
55 source.map_key(), &details)); 136 EXPECT_EQ("fr", adopted_language);
56 EXPECT_EQ("fr", details.adopted_language);
57 EXPECT_EQ("fr", 137 EXPECT_EQ("fr",
58 chrome_translate_client->GetLanguageState().original_language()); 138 chrome_translate_client->GetLanguageState().original_language());
59 } 139 }
60 140
61 #if defined (OS_WIN) 141 #if defined (OS_WIN)
62 #define MAYBE_TranslateSessionRestore DISABLED_TranslateSessionRestore 142 #define MAYBE_TranslateSessionRestore DISABLED_TranslateSessionRestore
63 #else 143 #else
64 #define MAYBE_TranslateSessionRestore TranslateSessionRestore 144 #define MAYBE_TranslateSessionRestore TranslateSessionRestore
65 #endif 145 #endif
66 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, 146 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
67 MAYBE_TranslateSessionRestore) { 147 MAYBE_TranslateSessionRestore) {
68 scoped_ptr<test::CldDataHarness> cld_data_harness = 148 WaitUntilLanguageDetected();
69 test::CldDataHarnessFactory::Get()->CreateCldDataHarness();
70 ASSERT_NO_FATAL_FAILURE(cld_data_harness->Init());
71 content::WebContents* current_web_contents =
72 browser()->tab_strip_model()->GetActiveWebContents();
73 content::Source<content::WebContents> source(current_web_contents);
74 149
75 ui_test_utils::WindowedNotificationObserverWithDetails< 150 content::WebContents* restored_web_contents =
76 translate::LanguageDetectionDetails> 151 browser()->tab_strip_model()->GetWebContentsAt(0);
77 fr_language_detected_signal(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 152
78 source); 153 std::string adopted_language = GetLanguageFor(restored_web_contents);
79 fr_language_detected_signal.Wait(); 154 EXPECT_EQ("fr", adopted_language);
80 } 155 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/browser_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698