summaryrefslogtreecommitdiffstats
path: root/chrome/browser/translate
diff options
context:
space:
mode:
authormiguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-28 12:50:32 +0000
committermiguelg@chromium.org <miguelg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-28 12:50:32 +0000
commitb637bcdbd317cd799fd7ae022651b5f3b4c90217 (patch)
treeccf65e306bacd0be84dd9c0f1d4169657f83d6f0 /chrome/browser/translate
parentd41ad3aef0f87eb63f492c2cc99001fa90d1137d (diff)
downloadchromium_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.cc7
-rw-r--r--chrome/browser/translate/translate_manager_browsertest.cc23
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