| 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 1a1202ba26cbe2a83aa8e3fa1c6799b2882b1fc2..c6eac8f8c38a0a4746a8abd09583bbf933e287f5 100644
|
| --- a/chrome/browser/translate/translate_manager_browsertest.cc
|
| +++ b/chrome/browser/translate/translate_manager_browsertest.cc
|
| @@ -24,13 +24,6 @@ class TranslateManagerBrowserTest : public InProcessBrowserTest {
|
| 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(); }
|
|
|
| void ResetObserver() {
|
| @@ -64,40 +57,37 @@ class TranslateManagerBrowserTest : public InProcessBrowserTest {
|
| 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();
|
| + 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();
|
|
|
| - std::string adopted_language = GetLanguageFor(current_web_contents);
|
| - EXPECT_EQ("und", adopted_language);
|
| + 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);
|
| -
|
| - ResetObserver();
|
| -
|
| current_web_contents = browser()->tab_strip_model()->GetActiveWebContents();
|
| - ChromeTranslateClient* chrome_translate_client =
|
| + 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());
|
| }
|
| @@ -115,15 +105,18 @@ IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
|
| 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);
|
|
|
| - std::string adopted_language = GetLanguageFor(current_web_contents);
|
| - EXPECT_EQ("und", adopted_language);
|
| + // 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());
|
|
|
| ResetObserver();
|
|
|
| @@ -132,8 +125,6 @@ IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
|
| 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());
|
| }
|
| @@ -145,28 +136,29 @@ IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
|
| #endif
|
| IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
|
| MAYBE_TranslateSessionRestore) {
|
| - WaitUntilLanguageDetected();
|
| -
|
| content::WebContents* active_web_contents =
|
| browser()->tab_strip_model()->GetActiveWebContents();
|
| - std::string active_adopted_language = GetLanguageFor(active_web_contents);
|
| + 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);
|
|
|
| content::WebContents* restored_web_contents =
|
| browser()->tab_strip_model()->GetWebContentsAt(0);
|
| - 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()) {
|
| + ChromeTranslateClient* restored_translate_client =
|
| + ChromeTranslateClient::FromWebContents(restored_web_contents);
|
| + if (restored_translate_client->GetLanguageState()
|
| + .current_language()
|
| + .empty()) {
|
| ResetObserver();
|
| WaitUntilLanguageDetected();
|
| - 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);
|
| + EXPECT_EQ("fr",
|
| + restored_translate_client->GetLanguageState().current_language());
|
| }
|
|
|