From b637bcdbd317cd799fd7ae022651b5f3b4c90217 Mon Sep 17 00:00:00 2001 From: "miguelg@chromium.org" Date: Thu, 28 Mar 2013 12:50:32 +0000 Subject: Do not offer a translate infobar on an offline reload. BUG=222368 Review URL: https://chromiumcodereview.appspot.com/12965014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191137 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/translate/translate_manager.cc | 7 +++++++ .../translate/translate_manager_browsertest.cc | 23 ++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) (limited to 'chrome/browser/translate') diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc index 92ff89a..d62e8cd 100644 --- a/chrome/browser/translate/translate_manager.cc +++ b/chrome/browser/translate/translate_manager.cc @@ -294,6 +294,13 @@ void TranslateManager::Observe(int type, if (!translate_tab_helper) return; + // If the navigation happened while offline don't show the translate + // bar since there will be nothing to translate. + if (load_details->http_status_code == 0 || + load_details->http_status_code == 500) { + return; + } + if (!load_details->is_main_frame && translate_tab_helper->language_state().translation_declined()) { // Some sites (such as Google map) may trigger sub-frame navigations diff --git a/chrome/browser/translate/translate_manager_browsertest.cc b/chrome/browser/translate/translate_manager_browsertest.cc index ae81106..7938a70 100644 --- a/chrome/browser/translate/translate_manager_browsertest.cc +++ b/chrome/browser/translate/translate_manager_browsertest.cc @@ -193,9 +193,12 @@ class TranslateManagerTest : public ChromeRenderViewHostTestHarness, return true; } - void ReloadAndWait() { + void ReloadAndWait(bool successful_reload) { NavEntryCommittedObserver nav_observer(web_contents()); - Reload(); + if (successful_reload) + Reload(); + else + FailedReload(); // Ensures it is really handled a reload. const content::LoadCommittedDetails& nav_details = @@ -436,7 +439,7 @@ TEST_F(TranslateManagerTest, NormalTranslate) { ASSERT_TRUE(new_infobar != NULL); // Verify reload keeps the same settings. - ReloadAndWait(); + ReloadAndWait(true); new_infobar = GetTranslateInfoBar(); ASSERT_TRUE(new_infobar != NULL); ASSERT_EQ(new_target_lang, infobar->target_language_code()); @@ -744,7 +747,8 @@ TEST_F(TranslateManagerTest, MultipleOnPageContents) { EXPECT_EQ(0U, infobar_service()->GetInfoBarCount()); } -// Test that reloading the page brings back the infobar. +// Test that reloading the page brings back the infobar if the +// reload succeeded and does not bring it back the reload fails. TEST_F(TranslateManagerTest, Reload) { // Simulate navigating to a page and getting its language. SimulateNavigation(GURL("http://www.google.fr"), "fr", true); @@ -752,9 +756,16 @@ TEST_F(TranslateManagerTest, Reload) { // Close the infobar. EXPECT_TRUE(CloseTranslateInfoBar()); - // Reload should bring back the infobar. - ReloadAndWait(); + // Reload should bring back the infobar if the page succeds + ReloadAndWait(true); EXPECT_TRUE(GetTranslateInfoBar() != NULL); + + // Close the infobar. + EXPECT_TRUE(CloseTranslateInfoBar()); + + // And not show it if the reload fails + ReloadAndWait(false); + EXPECT_EQ(NULL, GetTranslateInfoBar()); } // Test that reloading the page by way of typing again the URL in the -- cgit v1.1