| 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);
 | 
| +}
 | 
| 
 |