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

Unified Diff: chrome/browser/translate/translate_manager_unittest.cc

Issue 3034013: Fetch the translate script regularly (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Synced Created 10 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/translate/translate_manager_unittest.cc
diff --git a/chrome/browser/translate/translate_manager_unittest.cc b/chrome/browser/translate/translate_manager_unittest.cc
index 41d8c3da85ae4b2d2b1fb91fb6613b82ed9c3d0f..1b1598d8540ac99e18add698097b0137b96369f3 100644
--- a/chrome/browser/translate/translate_manager_unittest.cc
+++ b/chrome/browser/translate/translate_manager_unittest.cc
@@ -113,6 +113,11 @@ class TranslateManagerTest : public RenderViewHostTestHarness,
removed_infobars_.clear();
}
+ void ExpireTranslateScriptImmediately() {
+ Singleton<TranslateManager>::get()->
+ set_translate_script_expiration_delay(0);
+ }
+
// If there is 1 infobar and it is a translate infobar, deny translation and
// returns true. Returns false otherwise.
bool DenyTranslation() {
@@ -140,8 +145,12 @@ class TranslateManagerTest : public RenderViewHostTestHarness,
// the TranslateManager is created before the TabContents. This matters as
// they both register for similar events and we want the notifications to
// happen in the same sequence (TranslateManager first, TabContents second).
- // Also clears the translate script so it is fetched everytime.
+ // Also clears the translate script so it is fetched everytime and sets the
+ // expiration delay to a large value by default (in case it was zeroed in
+ // a previous test).
Singleton<TranslateManager>::get()->ClearTranslateScript();
+ Singleton<TranslateManager>::get()->
+ set_translate_script_expiration_delay(60 * 60 * 1000);
RenderViewHostTestHarness::SetUp();
@@ -272,7 +281,7 @@ TEST_F(TranslateManagerTest, NormalTranslate) {
// We should have an infobar.
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kBeforeTranslate, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
// Simulate clicking translate.
process()->sink().ClearMessages();
@@ -281,7 +290,7 @@ TEST_F(TranslateManagerTest, NormalTranslate) {
// The "Translating..." infobar should be showing.
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kTranslating, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type());
// Simulate the translate script being retrieved (it only needs to be done
// once in the test as it is cached).
@@ -302,7 +311,7 @@ TEST_F(TranslateManagerTest, NormalTranslate) {
// The after translate infobar should be showing.
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kAfterTranslate, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar->type());
// Simulate changing the original language, this should trigger a translation.
process()->sink().ClearMessages();
@@ -343,7 +352,7 @@ TEST_F(TranslateManagerTest, TranslateScriptNotAvailable) {
// We should have an infobar.
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kBeforeTranslate, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
// Simulate clicking translate.
process()->sink().ClearMessages();
@@ -357,7 +366,7 @@ TEST_F(TranslateManagerTest, TranslateScriptNotAvailable) {
// And we should have an error infobar showing.
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kTranslationError, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
}
// Ensures we deal correctly with pages for which the browser does not recognize
@@ -375,7 +384,7 @@ TEST_F(TranslateManagerTest, TranslateUnknownLanguage) {
TestRenderViewContextMenu::CreateContextMenu(contents()));
menu->Init();
menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
- SimulateURLFetch(true); // Simulare receiving the translate script.
+ SimulateURLFetch(true); // Simulate receiving the translate script.
// Simulate the render notifying the translation has been done, the server
// having detected the page was in a known and supported language.
@@ -385,7 +394,7 @@ TEST_F(TranslateManagerTest, TranslateUnknownLanguage) {
// The after translate infobar should be showing.
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kAfterTranslate, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar->type());
EXPECT_EQ("fr", infobar->GetOriginalLanguageCode());
EXPECT_EQ("en", infobar->GetTargetLanguageCode());
@@ -400,7 +409,7 @@ TEST_F(TranslateManagerTest, TranslateUnknownLanguage) {
TranslateErrors::IDENTICAL_LANGUAGES));
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kTranslationError, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
EXPECT_EQ(TranslateErrors::IDENTICAL_LANGUAGES, infobar->error());
// Let's run the same steps again but this time the server fails to detect the
@@ -414,7 +423,7 @@ TEST_F(TranslateManagerTest, TranslateUnknownLanguage) {
TranslateErrors::UNKNOWN_LANGUAGE));
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kTranslationError, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error());
}
@@ -734,7 +743,7 @@ TEST_F(TranslateManagerTest, ServerReportsUnsupportedLanguage) {
// language.
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kTranslationError, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
// This infobar should have a button (so the string should not be empty).
ASSERT_FALSE(infobar->GetMessageInfoBarButtonText().empty());
@@ -1056,7 +1065,7 @@ TEST_F(TranslateManagerTest, BeforeTranslateExtraButtons) {
true);
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kBeforeTranslate, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
if (i < 3) {
EXPECT_FALSE(infobar->ShouldShowAlwaysTranslateButton());
infobar->Translate();
@@ -1084,7 +1093,7 @@ TEST_F(TranslateManagerTest, BeforeTranslateExtraButtons) {
true);
infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
- EXPECT_EQ(TranslateInfoBarDelegate::kBeforeTranslate, infobar->type());
+ EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
if (i < 3) {
EXPECT_FALSE(infobar->ShouldShowNeverTranslateButton());
infobar->TranslationDeclined();
@@ -1119,3 +1128,41 @@ TEST_F(TranslateManagerTest, NonTranslatablePage) {
EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
}
+// Tests that the script is expired and refetched as expected.
+TEST_F(TranslateManagerTest, ScriptExpires) {
+ ExpireTranslateScriptImmediately();
+
+ // Simulate navigating to a page and translating it.
+ SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
+ TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
+ ASSERT_TRUE(infobar != NULL);
+ process()->sink().ClearMessages();
+ infobar->Translate();
+ SimulateURLFetch(true);
+ rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
+ TranslateErrors::NONE));
+
+ // A task should have been posted to clear the script, run it.
+ MessageLoop::current()->RunAllPending();
+
+ // Do another navigation and translation.
+ SimulateNavigation(GURL("http://www.google.es"), 1, "El Google", "es", true);
+ infobar = GetTranslateInfoBar();
+ ASSERT_TRUE(infobar != NULL);
+ process()->sink().ClearMessages();
+ infobar->Translate();
+ // If we don't simulate the URL fetch, the TranslateManager should be waiting
+ // for the script and no message should have been sent to the renderer.
+ EXPECT_TRUE(
+ process()->sink().GetFirstMessageMatching(ViewMsg_TranslatePage::ID) ==
+ NULL);
+ // Now simulate the URL fetch.
+ SimulateURLFetch(true);
+ // Now the message should have been sent.
+ int page_id = 0;
+ std::string original_lang, target_lang;
+ EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
+ EXPECT_EQ(1, page_id);
+ EXPECT_EQ("es", original_lang);
+ EXPECT_EQ("en", target_lang);
+}
« no previous file with comments | « chrome/browser/translate/translate_manager.cc ('k') | chrome/browser/views/infobars/translate_infobar_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698