| Index: chrome/browser/translate/translate_manager_browsertest.cc
|
| diff --git a/chrome/browser/translate/translate_manager_browsertest.cc b/chrome/browser/translate/translate_manager_browsertest.cc
|
| index dbc78affa929d51bad442f2d4b4dc5ae1f4ea26d..1a1202ba26cbe2a83aa8e3fa1c6799b2882b1fc2 100644
|
| --- a/chrome/browser/translate/translate_manager_browsertest.cc
|
| +++ b/chrome/browser/translate/translate_manager_browsertest.cc
|
| @@ -23,6 +23,13 @@
|
| public:
|
| TranslateManagerBrowserTest() {}
|
| ~TranslateManagerBrowserTest() override {}
|
| +
|
| + std::string GetLanguageFor(content::WebContents* web_contents) {
|
| + translate::LanguageDetectionDetails details;
|
| + content::Source<content::WebContents> source(web_contents);
|
| + language_detected_signal_->GetDetailsFor(source.map_key(), &details);
|
| + return details.adopted_language;
|
| + }
|
|
|
| void WaitUntilLanguageDetected() { language_detected_signal_->Wait(); }
|
|
|
| @@ -57,37 +64,40 @@
|
| IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageLanguageDetection) {
|
| ASSERT_TRUE(embedded_test_server()->Start());
|
|
|
| + // The InProcessBrowserTest opens a new tab, let's wait for that first.
|
| + WaitUntilLanguageDetected();
|
| +
|
| content::WebContents* current_web_contents =
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
| +
|
| + std::string adopted_language = GetLanguageFor(current_web_contents);
|
| + EXPECT_EQ("und", adopted_language);
|
| +
|
| + // Open a new tab with a page in English.
|
| + AddTabAtIndex(0, GURL(embedded_test_server()->GetURL("/english_page.html")),
|
| + ui::PAGE_TRANSITION_TYPED);
|
| +
|
| + ResetObserver();
|
| +
|
| + current_web_contents = browser()->tab_strip_model()->GetActiveWebContents();
|
| ChromeTranslateClient* chrome_translate_client =
|
| ChromeTranslateClient::FromWebContents(current_web_contents);
|
| - // The InProcessBrowserTest opens a new tab, let's wait for that first.
|
| - // There is a possible race condition, when the language is not yet detected,
|
| - // so we check for that and wait if necessary.
|
| - if (chrome_translate_client->GetLanguageState().original_language().empty())
|
| - WaitUntilLanguageDetected();
|
|
|
| - EXPECT_EQ("und",
|
| - chrome_translate_client->GetLanguageState().original_language());
|
| -
|
| - // Open a new tab with a page in English.
|
| - ResetObserver();
|
| - AddTabAtIndex(0, GURL(embedded_test_server()->GetURL("/english_page.html")),
|
| - ui::PAGE_TRANSITION_TYPED);
|
| - current_web_contents = browser()->tab_strip_model()->GetActiveWebContents();
|
| - chrome_translate_client =
|
| - ChromeTranslateClient::FromWebContents(current_web_contents);
|
| WaitUntilLanguageDetected();
|
| -
|
| + adopted_language = GetLanguageFor(current_web_contents);
|
| + EXPECT_EQ("en", adopted_language);
|
| EXPECT_EQ("en",
|
| chrome_translate_client->GetLanguageState().original_language());
|
|
|
| ResetObserver();
|
| +
|
| // Now navigate to a page in French.
|
| ui_test_utils::NavigateToURL(
|
| browser(), GURL(embedded_test_server()->GetURL("/french_page.html")));
|
| +
|
| WaitUntilLanguageDetected();
|
| -
|
| + adopted_language = GetLanguageFor(current_web_contents);
|
| + EXPECT_EQ("fr", adopted_language);
|
| EXPECT_EQ("fr",
|
| chrome_translate_client->GetLanguageState().original_language());
|
| }
|
| @@ -105,18 +115,15 @@
|
| SessionStartupPref pref(SessionStartupPref::LAST);
|
| SessionStartupPref::SetStartupPref(browser()->profile(), pref);
|
|
|
| + WaitUntilLanguageDetected();
|
| +
|
| content::WebContents* current_web_contents =
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
| ChromeTranslateClient* chrome_translate_client =
|
| ChromeTranslateClient::FromWebContents(current_web_contents);
|
|
|
| - // There is a possible race condition, when the language is not yet detected,
|
| - // so we check for that and wait if necessary.
|
| - if (chrome_translate_client->GetLanguageState().original_language().empty())
|
| - WaitUntilLanguageDetected();
|
| -
|
| - EXPECT_EQ("und",
|
| - chrome_translate_client->GetLanguageState().original_language());
|
| + std::string adopted_language = GetLanguageFor(current_web_contents);
|
| + EXPECT_EQ("und", adopted_language);
|
|
|
| ResetObserver();
|
|
|
| @@ -125,6 +132,8 @@
|
| ui_test_utils::NavigateToURL(browser(), french_url);
|
|
|
| WaitUntilLanguageDetected();
|
| + adopted_language = GetLanguageFor(current_web_contents);
|
| + EXPECT_EQ("fr", adopted_language);
|
| EXPECT_EQ("fr",
|
| chrome_translate_client->GetLanguageState().original_language());
|
| }
|
| @@ -136,25 +145,28 @@
|
| #endif
|
| IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
|
| MAYBE_TranslateSessionRestore) {
|
| + WaitUntilLanguageDetected();
|
| +
|
| content::WebContents* active_web_contents =
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
| - ChromeTranslateClient* active_translate_client =
|
| - ChromeTranslateClient::FromWebContents(active_web_contents);
|
| - if (active_translate_client->GetLanguageState().current_language().empty())
|
| - WaitUntilLanguageDetected();
|
| - EXPECT_EQ("und",
|
| - active_translate_client->GetLanguageState().current_language());
|
| -
|
| - // Make restored tab active to (on some platforms) initiate language
|
| - // detection.
|
| - browser()->tab_strip_model()->ActivateTabAt(0, true);
|
| + std::string active_adopted_language = GetLanguageFor(active_web_contents);
|
|
|
| content::WebContents* restored_web_contents =
|
| browser()->tab_strip_model()->GetWebContentsAt(0);
|
| - ChromeTranslateClient* restored_translate_client =
|
| - ChromeTranslateClient::FromWebContents(restored_web_contents);
|
| - if (restored_translate_client->GetLanguageState().current_language().empty())
|
| + std::string restored_adopted_language = GetLanguageFor(restored_web_contents);
|
| +
|
| + // One of the tabs could be still loading, let's check on that and wait,
|
| + // if necessary.
|
| + if (active_adopted_language.empty()) {
|
| + ResetObserver();
|
| WaitUntilLanguageDetected();
|
| - EXPECT_EQ("fr",
|
| - restored_translate_client->GetLanguageState().current_language());
|
| + active_adopted_language = GetLanguageFor(active_web_contents);
|
| + } else if (restored_adopted_language.empty()) {
|
| + ResetObserver();
|
| + WaitUntilLanguageDetected();
|
| + restored_adopted_language = GetLanguageFor(restored_web_contents);
|
| + }
|
| +
|
| + EXPECT_EQ("fr", restored_adopted_language);
|
| + EXPECT_EQ("und", active_adopted_language);
|
| }
|
|
|