diff options
author | miguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-28 12:50:32 +0000 |
---|---|---|
committer | miguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-28 12:50:32 +0000 |
commit | b637bcdbd317cd799fd7ae022651b5f3b4c90217 (patch) | |
tree | ccf65e306bacd0be84dd9c0f1d4169657f83d6f0 /chrome/browser/translate | |
parent | d41ad3aef0f87eb63f492c2cc99001fa90d1137d (diff) | |
download | chromium_src-b637bcdbd317cd799fd7ae022651b5f3b4c90217.zip chromium_src-b637bcdbd317cd799fd7ae022651b5f3b4c90217.tar.gz chromium_src-b637bcdbd317cd799fd7ae022651b5f3b4c90217.tar.bz2 |
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
Diffstat (limited to 'chrome/browser/translate')
-rw-r--r-- | chrome/browser/translate/translate_manager.cc | 7 | ||||
-rw-r--r-- | chrome/browser/translate/translate_manager_browsertest.cc | 23 |
2 files changed, 24 insertions, 6 deletions
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 |