summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-29 17:14:32 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-29 17:14:32 +0000
commitd49b7939865d7b7d0c15f4525befa7935eac48fe (patch)
treeeeac50c5687c50f380485345b0f6c83c6ddefd28 /chrome/browser
parent8d0b59d305d73765890b2154bfed916f271ec191 (diff)
downloadchromium_src-d49b7939865d7b7d0c15f4525befa7935eac48fe.zip
chromium_src-d49b7939865d7b7d0c15f4525befa7935eac48fe.tar.gz
chromium_src-d49b7939865d7b7d0c15f4525befa7935eac48fe.tar.bz2
Revert "implement error state for translate infobar"
Due to broken build (compile). TBR=kuan BUG=38548 Review URL: http://codereview.chromium.org/1567001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42955 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/cocoa/translate_infobar.mm4
-rw-r--r--chrome/browser/cocoa/translate_infobar_unittest.mm7
-rw-r--r--chrome/browser/gtk/translate_infobars.cc4
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc8
-rw-r--r--chrome/browser/renderer_host/render_view_host.h4
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h4
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc13
-rw-r--r--chrome/browser/tab_contents/tab_contents.h4
-rw-r--r--chrome/browser/translate/page_translated_details.h26
-rw-r--r--chrome/browser/translate/translate_infobars_delegates.cc42
-rw-r--r--chrome/browser/translate/translate_infobars_delegates.h24
-rw-r--r--chrome/browser/translate/translate_manager.cc27
-rw-r--r--chrome/browser/translate/translate_manager.h4
-rw-r--r--chrome/browser/translate/translate_manager_unittest.cc15
-rw-r--r--chrome/browser/views/infobars/infobars.cc83
-rw-r--r--chrome/browser/views/infobars/infobars.h15
-rw-r--r--chrome/browser/views/infobars/translate_infobars.cc257
-rw-r--r--chrome/browser/views/infobars/translate_infobars.h31
18 files changed, 140 insertions, 432 deletions
diff --git a/chrome/browser/cocoa/translate_infobar.mm b/chrome/browser/cocoa/translate_infobar.mm
index 03e1d52..28b1fb7 100644
--- a/chrome/browser/cocoa/translate_infobar.mm
+++ b/chrome/browser/cocoa/translate_infobar.mm
@@ -456,8 +456,8 @@ class TranslateNotificationObserverBridge :
- (void)loadLabelText {
string16 message_text_utf16;
std::vector<size_t> offsets;
- [self delegate]->GetMessageText([self delegate]->state(), &message_text_utf16,
- &offsets, &swappedLanguagePlaceholders_);
+ [self delegate]->GetMessageText(&message_text_utf16, &offsets,
+ &swappedLanguagePlaceholders_);
NSString* message_text = base::SysUTF16ToNSString(message_text_utf16);
NSRange label1Range = NSMakeRange(0, offsets[0]);
diff --git a/chrome/browser/cocoa/translate_infobar_unittest.mm b/chrome/browser/cocoa/translate_infobar_unittest.mm
index e2188d1..f871139 100644
--- a/chrome/browser/cocoa/translate_infobar_unittest.mm
+++ b/chrome/browser/cocoa/translate_infobar_unittest.mm
@@ -26,7 +26,7 @@ class MockTranslateInfoBarDelegate : public TranslateInfoBarDelegate {
public:
MockTranslateInfoBarDelegate() {
// Start out in the "Before Translate" state.
- UpdateState(kBeforeTranslate, TranslateErrors::NONE);
+ UpdateState(kBeforeTranslate);
}
virtual string16 GetDisplayNameForLocale(const std::string& language_code) {
@@ -71,7 +71,7 @@ class TranslationBarInfoTest : public CocoaTest {
}
void CreateInfoBar(TranslateInfoBarDelegate::TranslateState initial_state) {
- infobar_delegate->UpdateState(initial_state, TranslateErrors::NONE);
+ infobar_delegate->UpdateState(initial_state);
[[infobar_controller view] removeFromSuperview];
infobar_controller.reset(
[[TranslateInfoBarController alloc]
@@ -104,8 +104,7 @@ TEST_F(TranslationBarInfoTest, StateTransitions) {
CreateInfoBar();
for (size_t i = 0; i < arraysize(kTranslateToolbarStates); ++i) {
- infobar_delegate->UpdateState(kTranslateToolbarStates[i],
- TranslateErrors::NONE);
+ infobar_delegate->UpdateState(kTranslateToolbarStates[i]);
// First time around, the toolbar should already be layed out.
if (i != 0)
diff --git a/chrome/browser/gtk/translate_infobars.cc b/chrome/browser/gtk/translate_infobars.cc
index 350e0c15..d83e7a2 100644
--- a/chrome/browser/gtk/translate_infobars.cc
+++ b/chrome/browser/gtk/translate_infobars.cc
@@ -300,8 +300,8 @@ void TranslateInfoBar::UpdateState(
void TranslateInfoBar::SetLabels() {
std::vector<size_t> offsets;
string16 message_text_utf16;
- GetDelegate()->GetMessageText(GetDelegate()->state(), &message_text_utf16,
- &offsets, &swapped_language_placeholders_);
+ GetDelegate()->GetMessageText(&message_text_utf16, &offsets,
+ &swapped_language_placeholders_);
string16 text = message_text_utf16.substr(0, offsets[0]);
gtk_label_set_text(GTK_LABEL(label_1_), UTF16ToUTF8(text).c_str());
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index c8c4df0..548410b 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -37,7 +37,6 @@
#include "chrome/common/result_codes.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/thumbnail_score.h"
-#include "chrome/common/translate_errors.h"
#include "chrome/common/url_constants.h"
#include "gfx/native_widget_types.h"
#include "net/base/net_util.h"
@@ -1850,14 +1849,13 @@ void RenderViewHost::OnPageContents(const GURL& url,
void RenderViewHost::OnPageTranslated(int32 page_id,
const std::string& original_lang,
- const std::string& translated_lang,
- TranslateErrors::Type error_type) {
+ const std::string& translated_lang) {
RenderViewHostDelegate::BrowserIntegration* integration_delegate =
delegate_->GetBrowserIntegrationDelegate();
if (!integration_delegate)
return;
- integration_delegate->OnPageTranslated(page_id, original_lang,
- translated_lang, error_type);
+ integration_delegate->OnPageTranslated(page_id,
+ original_lang, translated_lang);
}
void RenderViewHost::OnContentBlocked(ContentSettingsType type) {
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index d628a79..96b314c 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -13,7 +13,6 @@
#include "chrome/browser/renderer_host/render_widget_host.h"
#include "chrome/common/content_settings_types.h"
#include "chrome/common/page_zoom.h"
-#include "chrome/common/translate_errors.h"
#include "chrome/common/view_types.h"
#include "net/base/load_states.h"
#include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h"
@@ -619,8 +618,7 @@ class RenderViewHost : public RenderWidgetHost {
const std::string& language);
void OnPageTranslated(int32 page_id,
const std::string& original_lang,
- const std::string& translated_lang,
- TranslateErrors::Type error_type);
+ const std::string& translated_lang);
void OnContentBlocked(ContentSettingsType type);
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index 8c9127b..3ac57b9 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -11,7 +11,6 @@
#include "base/basictypes.h"
#include "base/string16.h"
#include "chrome/common/content_settings_types.h"
-#include "chrome/common/translate_errors.h"
#include "chrome/common/view_types.h"
#include "net/base/load_states.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDragOperation.h"
@@ -235,8 +234,7 @@ class RenderViewHostDelegate {
// Notification that the page has been translated.
virtual void OnPageTranslated(int32 page_id,
const std::string& original_lang,
- const std::string& translated_lang,
- TranslateErrors::Type error_type) = 0;
+ const std::string& translated_lang) = 0;
};
// Resource ------------------------------------------------------------------
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index 7035226..f739a9e 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -53,8 +53,6 @@
#include "chrome/browser/renderer_host/translation_service.h"
#include "chrome/browser/renderer_host/web_cache_manager.h"
#include "chrome/browser/renderer_preferences_util.h"
-#include "chrome/browser/search_engines/template_url_fetcher.h"
-#include "chrome/browser/search_engines/template_url_model.h"
#include "chrome/browser/sessions/session_types.h"
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/browser/tab_contents/interstitial_page.h"
@@ -64,7 +62,8 @@
#include "chrome/browser/tab_contents/tab_contents_view.h"
#include "chrome/browser/tab_contents/thumbnail_generator.h"
#include "chrome/browser/thumbnail_store.h"
-#include "chrome/browser/translate/page_translated_details.h"
+#include "chrome/browser/search_engines/template_url_fetcher.h"
+#include "chrome/browser/search_engines/template_url_model.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_action.h"
@@ -1920,15 +1919,15 @@ void TabContents::OnPageContents(const GURL& url,
void TabContents::OnPageTranslated(int32 page_id,
const std::string& original_lang,
- const std::string& translated_lang,
- TranslateErrors::Type error_type) {
+ const std::string& translated_lang) {
language_state_.set_current_language(translated_lang);
language_state_.set_translation_pending(false);
- PageTranslatedDetails details(original_lang, translated_lang, error_type);
+ std::pair<std::string, std::string> lang_pair =
+ std::make_pair(original_lang, translated_lang);
NotificationService::current()->Notify(
NotificationType::PAGE_TRANSLATED,
Source<TabContents>(this),
- Details<PageTranslatedDetails>(&details));
+ Details<std::pair<std::string, std::string> >(&lang_pair));
}
void TabContents::DidStartProvisionalLoadForFrame(
diff --git a/chrome/browser/tab_contents/tab_contents.h b/chrome/browser/tab_contents/tab_contents.h
index c64fe16..5ea18a6 100644
--- a/chrome/browser/tab_contents/tab_contents.h
+++ b/chrome/browser/tab_contents/tab_contents.h
@@ -41,7 +41,6 @@
#include "chrome/common/notification_registrar.h"
#include "chrome/common/property_bag.h"
#include "chrome/common/renderer_preferences.h"
-#include "chrome/common/translate_errors.h"
#include "gfx/native_widget_types.h"
#include "gfx/rect.h"
#include "net/base/load_states.h"
@@ -827,8 +826,7 @@ class TabContents : public PageNavigator,
const std::string& language);
virtual void OnPageTranslated(int32 page_id,
const std::string& original_lang,
- const std::string& translated_lang,
- TranslateErrors::Type error_type);
+ const std::string& translated_lang);
// RenderViewHostDelegate::Resource implementation.
virtual void DidStartProvisionalLoadForFrame(RenderViewHost* render_view_host,
diff --git a/chrome/browser/translate/page_translated_details.h b/chrome/browser/translate/page_translated_details.h
deleted file mode 100644
index 61a43d4..0000000
--- a/chrome/browser/translate/page_translated_details.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_TRANSLATE_PAGE_TRANSLATED_DETAILS_H_
-#define CHROME_BROWSER_TRANSLATE_PAGE_TRANSLATED_DETAILS_H_
-
-#include <string>
-
-#include "chrome/common/translate_errors.h"
-
-// Used when sending a notification about a page that has been translated.
-struct PageTranslatedDetails {
- PageTranslatedDetails(const std::string& in_source_language,
- const std::string& in_target_language,
- TranslateErrors::Type in_error_type)
- : source_language(in_source_language),
- target_language(in_target_language),
- error_type(in_error_type) { }
-
- std::string source_language;
- std::string target_language;
- TranslateErrors::Type error_type;
-};
-
-#endif // CHROME_BROWSER_TRANSLATE_PAGE_TRANSLATED_DETAILS_H_
diff --git a/chrome/browser/translate/translate_infobars_delegates.cc b/chrome/browser/translate/translate_infobars_delegates.cc
index 5caff33..e13be6a 100644
--- a/chrome/browser/translate/translate_infobars_delegates.cc
+++ b/chrome/browser/translate/translate_infobars_delegates.cc
@@ -48,10 +48,8 @@ string16 TranslateInfoBarDelegate::GetDisplayNameForLocale(
language_code, g_browser_process->GetApplicationLocale(), true);
}
-void TranslateInfoBarDelegate::UpdateState(TranslateState new_state,
- TranslateErrors::Type error_type) {
+void TranslateInfoBarDelegate::UpdateState(TranslateState new_state) {
translation_pending_ = false;
- error_type_ = error_type;
if (state_ != new_state)
state_ = new_state;
}
@@ -139,15 +137,14 @@ void TranslateInfoBarDelegate::ToggleAlwaysTranslate() {
target_lang_code());
}
-void TranslateInfoBarDelegate::GetMessageText(
- TranslateInfoBarDelegate::TranslateState state, string16 *message_text,
- std::vector<size_t> *offsets, bool *swapped_language_placeholders) {
+void TranslateInfoBarDelegate::GetMessageText(string16 *message_text,
+ std::vector<size_t> *offsets, bool *swapped_language_placeholders) {
*swapped_language_placeholders = false;
offsets->clear();
std::vector<size_t> offsets_tmp;
int message_resource_id = IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE;
- if (state == kAfterTranslate)
+ if (state() == kAfterTranslate)
message_resource_id = IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE;
*message_text = l10n_util::GetStringFUTF16(message_resource_id,
string16(), string16(), &offsets_tmp);
@@ -168,33 +165,13 @@ void TranslateInfoBarDelegate::GetMessageText(
*offsets = offsets_tmp;
}
-string16 TranslateInfoBarDelegate::GetErrorMessage(
- TranslateErrors::Type error_type) {
- int message_id = 0;
- switch (error_type) {
- case TranslateErrors::NONE:
- return string16();
- case TranslateErrors::NETWORK:
- message_id = IDS_TRANSLATE_INFOBAR_ERROR_CANT_CONNECT;
- break;
- case TranslateErrors::SERVER:
- message_id = IDS_TRANSLATE_INFOBAR_ERROR_CANT_TRANSLATE;
- break;
- default:
- NOTREACHED() << "Invalid translate error type";
- break;
- }
- return l10n_util::GetStringUTF16(message_id);
-}
-
// TranslateInfoBarDelegate: static: -------------------------------------------
TranslateInfoBarDelegate* TranslateInfoBarDelegate::Create(
TabContents* tab_contents, PrefService* user_prefs, TranslateState state,
const GURL& url,
const std::string& original_lang_code,
- const std::string& target_lang_code,
- TranslateErrors::Type error_type) {
+ const std::string& target_lang_code) {
std::vector<std::string> supported_languages;
TranslationService::GetSupportedLanguages(&supported_languages);
@@ -219,16 +196,14 @@ TranslateInfoBarDelegate* TranslateInfoBarDelegate::Create(
return NULL;
return new TranslateInfoBarDelegate(tab_contents, user_prefs, state, url,
- original_lang_index, target_lang_index,
- error_type);
+ original_lang_index, target_lang_index);
}
// TranslateInfoBarDelegate: private: ------------------------------------------
TranslateInfoBarDelegate::TranslateInfoBarDelegate(TabContents* tab_contents,
PrefService* user_prefs, TranslateState state, const GURL& url,
- int original_lang_index, int target_lang_index,
- TranslateErrors::Type error_type)
+ int original_lang_index, int target_lang_index)
: InfoBarDelegate(tab_contents),
tab_contents_(tab_contents),
prefs_(new TranslatePrefs(user_prefs)),
@@ -239,8 +214,7 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate(TabContents* tab_contents,
target_lang_index_(target_lang_index),
never_translate_language_(false),
never_translate_site_(false),
- always_translate_(false),
- error_type_(error_type) {
+ always_translate_(false) {
TranslationService::GetSupportedLanguages(&supported_languages_);
DCHECK(original_lang_index_ > -1);
DCHECK(target_lang_index_ > -1);
diff --git a/chrome/browser/translate/translate_infobars_delegates.h b/chrome/browser/translate/translate_infobars_delegates.h
index 40262a8..2d14724 100644
--- a/chrome/browser/translate/translate_infobars_delegates.h
+++ b/chrome/browser/translate/translate_infobars_delegates.h
@@ -7,7 +7,6 @@
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/browser/translate/translate_prefs.h"
-#include "chrome/common/translate_errors.h"
class SkBitmap;
@@ -16,13 +15,12 @@ class SkBitmap;
class TranslateInfoBarDelegate : public InfoBarDelegate {
public:
enum TranslateState {
- kTranslateNone = 0,
kBeforeTranslate = 1,
- kAfterTranslate,
- kTranslateError,
// TODO(playmobil or erg): remove kTranslating state when mac and linux code
// have been updated to use transaction_pending() instead.
kTranslating,
+ kAfterTranslate,
+ kTranslationFailed,
};
// Instantiates a TranslateInfoBarDelegate. Can return NULL if the passed
@@ -32,10 +30,9 @@ class TranslateInfoBarDelegate : public InfoBarDelegate {
TranslateState state,
const GURL& url,
const std::string& original_language,
- const std::string& target_language,
- TranslateErrors::Type error_type);
+ const std::string& target_language);
- void UpdateState(TranslateState new_state, TranslateErrors::Type error_type);
+ void UpdateState(TranslateState new_state);
void GetAvailableOriginalLanguages(std::vector<std::string>* languages);
void GetAvailableTargetLanguages(std::vector<std::string>* languages);
void ModifyOriginalLanguage(int lang_index);
@@ -74,15 +71,11 @@ class TranslateInfoBarDelegate : public InfoBarDelegate {
bool translation_pending() const {
return translation_pending_;
}
- TranslateErrors::Type error_type() const {
- return error_type_;
- }
// Retrieve the text for the toolbar label. The toolbar label is a bit
// strange since we need to place popup menus inside the string in question.
// To do this we use two placeholders.
//
- // |state| is the state to get message for.
// |message_text| is the text to display for the label.
// |offsets| contains the offsets of the number of placeholders in the text
// + message_text->length() i.e. it can contain 2 or 3 elements.
@@ -90,13 +83,10 @@ class TranslateInfoBarDelegate : public InfoBarDelegate {
// displayed in reverse order.
// |swapped_language_placeholders| is true if we need to flip the order
// of the menus in the current locale.
- void GetMessageText(TranslateState state,
- string16 *message_text,
+ void GetMessageText(string16 *message_text,
std::vector<size_t> *offsets,
bool *swapped_language_placeholders);
- string16 GetErrorMessage(TranslateErrors::Type error_type);
-
// Overridden from InfoBarDelegate.
virtual Type GetInfoBarType() {
return PAGE_ACTION_TYPE;
@@ -133,8 +123,7 @@ class TranslateInfoBarDelegate : public InfoBarDelegate {
TranslateState state,
const GURL& url,
int original_language_index,
- int target_language_index,
- TranslateErrors::Type error_type);
+ int target_language_index);
TabContents* tab_contents_; // Weak.
scoped_ptr<TranslatePrefs> prefs_;
@@ -148,7 +137,6 @@ class TranslateInfoBarDelegate : public InfoBarDelegate {
bool never_translate_language_;
bool never_translate_site_;
bool always_translate_;
- TranslateErrors::Type error_type_;
DISALLOW_COPY_AND_ASSIGN(TranslateInfoBarDelegate);
};
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc
index 214d731..5665c43 100644
--- a/chrome/browser/translate/translate_manager.cc
+++ b/chrome/browser/translate/translate_manager.cc
@@ -17,7 +17,6 @@
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_util.h"
-#include "chrome/browser/translate/page_translated_details.h"
#include "chrome/browser/translate/translate_prefs.h"
#include "chrome/common/notification_details.h"
#include "chrome/common/notification_service.h"
@@ -87,28 +86,23 @@ void TranslateManager::Observe(NotificationType type,
// just update the state, the actual infobar would have received the same
// notification and update the visual display accordingly.
TabContents* tab = Source<TabContents>(source).ptr();
- PageTranslatedDetails* page_translated_details =
- Details<PageTranslatedDetails>(details).ptr();
- TranslateInfoBarDelegate::TranslateState state =
- (page_translated_details->error_type == TranslateErrors::NONE ?
- TranslateInfoBarDelegate::kAfterTranslate :
- TranslateInfoBarDelegate::kTranslateError);
int i;
for (i = 0; i < tab->infobar_delegate_count(); ++i) {
TranslateInfoBarDelegate* info_bar =
tab->GetInfoBarDelegateAt(i)->AsTranslateInfoBarDelegate();
if (info_bar) {
- info_bar->UpdateState(state, page_translated_details->error_type);
+ info_bar->UpdateState(TranslateInfoBarDelegate::kAfterTranslate);
break;
}
}
if (i == tab->infobar_delegate_count()) {
NavigationEntry* entry = tab->controller().GetActiveEntry();
if (entry) {
- AddTranslateInfoBar(tab, state, entry->url(),
- page_translated_details->source_language,
- page_translated_details->target_language,
- page_translated_details->error_type);
+ std::pair<std::string, std::string>* language_pair =
+ (Details<std::pair<std::string, std::string> >(details).ptr());
+ AddTranslateInfoBar(tab, TranslateInfoBarDelegate::kAfterTranslate,
+ entry->url(),
+ language_pair->first, language_pair->second);
}
}
break;
@@ -207,8 +201,7 @@ void TranslateManager::InitiateTranslation(TabContents* tab,
// Prompts the user if he/she wants the page translated.
AddTranslateInfoBar(tab, TranslateInfoBarDelegate::kBeforeTranslate,
- entry->url(), page_lang, target_lang,
- TranslateErrors::NONE);
+ entry->url(), page_lang, target_lang);
}
void TranslateManager::InitiateTranslationPosted(int process_id,
@@ -277,13 +270,11 @@ void TranslateManager::InitAcceptLanguages(PrefService* prefs) {
void TranslateManager::AddTranslateInfoBar(
TabContents* tab, TranslateInfoBarDelegate::TranslateState state,
const GURL& url,
- const std::string& original_language, const std::string& target_language,
- TranslateErrors::Type error_type) {
+ const std::string& original_language, const std::string& target_language) {
PrefService* prefs = tab->profile()->GetPrefs();
TranslateInfoBarDelegate* infobar =
TranslateInfoBarDelegate::Create(tab, prefs, state, url,
- original_language, target_language,
- error_type);
+ original_language, target_language);
if (!infobar) {
NOTREACHED() << "Failed to create infobar for language " <<
original_language << " and " << target_language;
diff --git a/chrome/browser/translate/translate_manager.h b/chrome/browser/translate/translate_manager.h
index cf0e452..fed522d 100644
--- a/chrome/browser/translate/translate_manager.h
+++ b/chrome/browser/translate/translate_manager.h
@@ -14,7 +14,6 @@
#include "chrome/browser/translate/translate_infobars_delegates.h"
#include "chrome/common/notification_observer.h"
#include "chrome/common/notification_registrar.h"
-#include "chrome/common/translate_errors.h"
class GURL;
class PrefService;
@@ -75,8 +74,7 @@ class TranslateManager : public NotificationObserver {
TranslateInfoBarDelegate::TranslateState state,
const GURL& url,
const std::string& original_language,
- const std::string& target_language,
- TranslateErrors::Type error_type);
+ const std::string& target_language);
// Returns the language to translate to, which is the language the UI is
// configured in. Returns an empty string if that language is not supported
diff --git a/chrome/browser/translate/translate_manager_unittest.cc b/chrome/browser/translate/translate_manager_unittest.cc
index 0a982fd..30bc4c5 100644
--- a/chrome/browser/translate/translate_manager_unittest.cc
+++ b/chrome/browser/translate/translate_manager_unittest.cc
@@ -268,8 +268,7 @@ TEST_F(TranslateManagerTest, NormalTranslate) {
// EXPECT_EQ(TranslateInfoBarDelegate::kTranslating, infobar->state());
// Simulate the render notifying the translation has been done.
- rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
- TranslateErrors::NONE));
+ rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en"));
// The infobar should have changed to the after state.
EXPECT_FALSE(InfoBarRemoved());
@@ -376,8 +375,7 @@ TEST_F(TranslateManagerTest, AutoTranslateOnNavigate) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
infobar->Translate();
- rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
- TranslateErrors::NONE));
+ rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en"));
// Now navigate to a new page in the same language.
process()->sink().ClearMessages();
@@ -519,8 +517,7 @@ TEST_F(TranslateManagerTest, TranslateCloseInfoBarInPageNavigation) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
infobar->Translate();
- rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
- TranslateErrors::NONE));
+ rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en"));
// Close the infobar.
EXPECT_TRUE(CloseTranslateInfoBar());
@@ -547,8 +544,7 @@ TEST_F(TranslateManagerTest, TranslateInPageNavigation) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
infobar->Translate();
- rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
- TranslateErrors::NONE));
+ rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en"));
// Navigate in page, the same infobar should still be shown.
SimulateNavigation(GURL("http://www.google.fr/#ref1"), 0, L"Le Google", "fr");
@@ -771,8 +767,7 @@ TEST_F(TranslateManagerTest, ContextMenu) {
process()->sink().ClearMessages();
// Let's simulate the page being translated.
- rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
- TranslateErrors::NONE));
+ rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en"));
// The translate menu should now be disabled.
menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
diff --git a/chrome/browser/views/infobars/infobars.cc b/chrome/browser/views/infobars/infobars.cc
index 71382e2..3c5504d 100644
--- a/chrome/browser/views/infobars/infobars.cc
+++ b/chrome/browser/views/infobars/infobars.cc
@@ -51,48 +51,55 @@ static const SkColor kPageActionBackgroundColorBottom =
static const int kSeparatorLineHeight = 1;
-// InfoBarBackground, public: --------------------------------------------------
-
-InfoBarBackground::InfoBarBackground(InfoBarDelegate::Type infobar_type) {
- SkColor top_color;
- SkColor bottom_color;
- switch (infobar_type) {
- case InfoBarDelegate::INFO_TYPE:
- top_color = kInfoBackgroundColorTop;
- bottom_color = kInfoBackgroundColorBottom;
- break;
- case InfoBarDelegate::WARNING_TYPE:
- top_color = kWarningBackgroundColorTop;
- bottom_color = kWarningBackgroundColorBottom;
- break;
- case InfoBarDelegate::ERROR_TYPE:
- top_color = kErrorBackgroundColorTop;
- bottom_color = kErrorBackgroundColorBottom;
- break;
- case InfoBarDelegate::PAGE_ACTION_TYPE:
- top_color = kPageActionBackgroundColorTop;
- bottom_color = kPageActionBackgroundColorBottom;
- break;
- default:
- NOTREACHED();
- break;
+// InfoBarBackground -----------------------------------------------------------
+
+class InfoBarBackground : public views::Background {
+ public:
+ explicit InfoBarBackground(InfoBarDelegate::Type infobar_type) {
+ SkColor top_color;
+ SkColor bottom_color;
+ switch (infobar_type) {
+ case InfoBarDelegate::INFO_TYPE:
+ top_color = kInfoBackgroundColorTop;
+ bottom_color = kInfoBackgroundColorBottom;
+ break;
+ case InfoBarDelegate::WARNING_TYPE:
+ top_color = kWarningBackgroundColorTop;
+ bottom_color = kWarningBackgroundColorBottom;
+ break;
+ case InfoBarDelegate::ERROR_TYPE:
+ top_color = kErrorBackgroundColorTop;
+ bottom_color = kErrorBackgroundColorBottom;
+ break;
+ case InfoBarDelegate::PAGE_ACTION_TYPE:
+ top_color = kPageActionBackgroundColorTop;
+ bottom_color = kPageActionBackgroundColorBottom;
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+ gradient_background_.reset(
+ views::Background::CreateVerticalGradientBackground(top_color,
+ bottom_color));
}
- gradient_background_.reset(
- views::Background::CreateVerticalGradientBackground(top_color,
- bottom_color));
-}
-// InfoBarBackground, views::Background overrides: -----------------------------
+ // Overridden from views::View:
+ virtual void Paint(gfx::Canvas* canvas, views::View* view) const {
+ // First paint the gradient background.
+ gradient_background_->Paint(canvas, view);
-void InfoBarBackground::Paint(gfx::Canvas* canvas, views::View* view) const {
- // First paint the gradient background.
- gradient_background_->Paint(canvas, view);
+ // Now paint the separator line.
+ canvas->FillRectInt(ResourceBundle::toolbar_separator_color, 0,
+ view->height() - kSeparatorLineHeight, view->width(),
+ kSeparatorLineHeight);
+ }
- // Now paint the separator line.
- canvas->FillRectInt(ResourceBundle::toolbar_separator_color, 0,
- view->height() - kSeparatorLineHeight, view->width(),
- kSeparatorLineHeight);
-}
+ private:
+ scoped_ptr<views::Background> gradient_background_;
+
+ DISALLOW_COPY_AND_ASSIGN(InfoBarBackground);
+};
// InfoBar, public: ------------------------------------------------------------
diff --git a/chrome/browser/views/infobars/infobars.h b/chrome/browser/views/infobars/infobars.h
index c222824..60067ba 100644
--- a/chrome/browser/views/infobars/infobars.h
+++ b/chrome/browser/views/infobars/infobars.h
@@ -24,19 +24,6 @@ class NativeButton;
// chrome/browser/tab_contents/infobar_delegate.h for the delegate interface(s)
// that you must implement to use these.
-class InfoBarBackground : public views::Background {
- public:
- explicit InfoBarBackground(InfoBarDelegate::Type infobar_type);
-
- // Overridden from views::Background:
- virtual void Paint(gfx::Canvas* canvas, views::View* view) const;
-
- private:
- scoped_ptr<views::Background> gradient_background_;
-
- DISALLOW_COPY_AND_ASSIGN(InfoBarBackground);
-};
-
class InfoBar : public views::View,
public views::ButtonListener,
public AnimationDelegate {
@@ -111,11 +98,11 @@ class InfoBar : public views::View,
// Overridden from views::ButtonListener:
virtual void ButtonPressed(views::Button* sender, const views::Event& event);
+ private:
// Overridden from AnimationDelegate:
virtual void AnimationProgressed(const Animation* animation);
virtual void AnimationEnded(const Animation* animation);
- private:
// Called when an InfoBar is added or removed from a view hierarchy to do
// setup and shutdown.
void InfoBarAdded();
diff --git a/chrome/browser/views/infobars/translate_infobars.cc b/chrome/browser/views/infobars/translate_infobars.cc
index 040642e..60e0f62 100644
--- a/chrome/browser/views/infobars/translate_infobars.cc
+++ b/chrome/browser/views/infobars/translate_infobars.cc
@@ -9,14 +9,12 @@
#include "app/l10n_util.h"
#include "app/resource_bundle.h"
-#include "app/slide_animation.h"
#include "base/utf_string_conversions.h"
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/common/notification_service.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/translate/languages_menu_model.h"
#include "chrome/browser/translate/options_menu_model.h"
-#include "chrome/browser/translate/page_translated_details.h"
#include "gfx/canvas.h"
#include "grit/app_resources.h"
#include "grit/generated_resources.h"
@@ -236,34 +234,15 @@ bool TranslateTextButton::OnMousePressed(const views::MouseEvent& e) {
TranslateInfoBar::TranslateInfoBar(TranslateInfoBarDelegate* delegate)
: InfoBar(delegate),
- state_(TranslateInfoBarDelegate::kTranslateNone),
- translation_pending_(false),
label_1_(NULL),
label_2_(NULL),
label_3_(NULL),
translating_label_(NULL),
- error_label_(NULL),
accept_button_(NULL),
deny_button_(NULL),
target_language_menu_button_(NULL),
revert_button_(NULL),
- retry_button_(NULL),
swapped_language_placeholders_(false) {
- // Clear background set in base class InfoBarBackground, so that we can
- // handle special background requirements for translate infobar.
- set_background(NULL);
-
- // Initialize backgrounds.
- normal_background_.reset(
- new InfoBarBackground(InfoBarDelegate::PAGE_ACTION_TYPE));
- error_background_.reset(
- new InfoBarBackground(InfoBarDelegate::ERROR_TYPE));
-
- // Initialize slide animation for transitioning to and from error state.
- error_animation_.reset(new SlideAnimation(this));
- error_animation_->SetTweenType(SlideAnimation::NONE);
- error_animation_->SetSlideDuration(500);
-
// Initialize icon.
icon_ = new views::ImageView;
SkBitmap* image = delegate->GetIcon();
@@ -284,8 +263,7 @@ TranslateInfoBar::TranslateInfoBar(TranslateInfoBarDelegate* delegate)
AddChildView(options_menu_button_);
// Create state-dependent controls.
- UpdateState(GetDelegate()->state(), GetDelegate()->translation_pending(),
- GetDelegate()->error_type());
+ UpdateState(GetDelegate()->state());
// Register for PAGE_TRANSLATED notification.
notification_registrar_.Add(this, NotificationType::PAGE_TRANSLATED,
@@ -299,17 +277,10 @@ TranslateInfoBar::~TranslateInfoBar() {
}
void TranslateInfoBar::UpdateState(
- TranslateInfoBarDelegate::TranslateState new_state,
- bool new_translation_pending, TranslateErrors::Type error_type) {
- if (state_ == new_state && translation_pending_ == new_translation_pending)
- return;
-
- TranslateInfoBarDelegate::TranslateState old_state = state_;
- state_ = new_state;
- translation_pending_ = new_translation_pending;
-
+ TranslateInfoBarDelegate::TranslateState new_state) {
// Create and initialize state-dependent controls if necessary.
- switch (state_) {
+ bool translation_pending = GetDelegate()->translation_pending();
+ switch (new_state) {
case TranslateInfoBarDelegate::kAfterTranslate:
if (!target_language_menu_button_) {
CreateLabels();
@@ -342,85 +313,33 @@ void TranslateInfoBar::UpdateState(
}
break;
- case TranslateInfoBarDelegate::kTranslateError: {
- string16 error_message_utf16 = GetDelegate()->GetErrorMessage(error_type);
- std::wstring error_message = UTF16ToWideHack(error_message_utf16);
- if (error_label_) {
- error_label_->SetText(error_message);
- } else {
- error_label_ = CreateLabel(error_message);
- AddChildView(error_label_);
- }
- if (!retry_button_) {
- retry_button_ = new TranslateTextButton(this,
- IDS_TRANSLATE_INFOBAR_RETRY);
- AddChildView(retry_button_);
- }
- break;
- }
-
default:
NOTREACHED() << "Invalid translate state change";
break;
}
// If translation is pending, create "Translating..." label.
- if (translation_pending_ && !translating_label_) {
+ if (translation_pending && !translating_label_) {
translating_label_ = CreateLabel(
l10n_util::GetString(IDS_TRANSLATE_INFOBAR_TRANSLATING));
AddChildView(translating_label_);
}
- // Determine visibility of controls.
- if (label_1_)
- label_1_->SetVisible(
- state_ != TranslateInfoBarDelegate::kTranslateError);
- if (label_2_)
- label_2_->SetVisible(
- state_ != TranslateInfoBarDelegate::kTranslateError);
- if (label_3_ && !label_3_->GetText().empty())
- label_3_->SetVisible(
- state_ != TranslateInfoBarDelegate::kTranslateError);
+ // Determine visibility of state-dependent controls.
if (accept_button_)
- accept_button_->SetVisible(!translation_pending_ &&
- state_ == TranslateInfoBarDelegate::kBeforeTranslate);
+ accept_button_->SetVisible(!translation_pending &&
+ new_state == TranslateInfoBarDelegate::kBeforeTranslate);
if (deny_button_)
- deny_button_->SetVisible(!translation_pending_ &&
- state_ == TranslateInfoBarDelegate::kBeforeTranslate);
+ deny_button_->SetVisible(!translation_pending &&
+ new_state == TranslateInfoBarDelegate::kBeforeTranslate);
if (target_language_menu_button_)
target_language_menu_button_->SetVisible(
- state_ == TranslateInfoBarDelegate::kAfterTranslate);
+ new_state == TranslateInfoBarDelegate::kAfterTranslate);
if (revert_button_)
- revert_button_->SetVisible(!translation_pending_ &&
- state_ == TranslateInfoBarDelegate::kAfterTranslate);
+ revert_button_->SetVisible(!translation_pending &&
+ new_state == TranslateInfoBarDelegate::kAfterTranslate);
if (translating_label_)
- translating_label_->SetVisible(translation_pending_);
- if (error_label_)
- error_label_->SetVisible(!translation_pending_ &&
- state_ == TranslateInfoBarDelegate::kTranslateError);
- if (retry_button_)
- retry_button_->SetVisible(!translation_pending_ &&
- state_ == TranslateInfoBarDelegate::kTranslateError);
- if (options_menu_button_)
- options_menu_button_->SetVisible(
- state_ != TranslateInfoBarDelegate::kTranslateError);
- if (original_language_menu_button_)
- original_language_menu_button_->SetVisible(
- state_ != TranslateInfoBarDelegate::kTranslateError);
- if (target_language_menu_button_)
- target_language_menu_button_->SetVisible(
- state_ != TranslateInfoBarDelegate::kTranslateError);
-
- // If background should change per state, trigger animation of transition
- // accordingly.
- if (old_state != TranslateInfoBarDelegate::kTranslateError &&
- state_ == TranslateInfoBarDelegate::kTranslateError)
- error_animation_->Show(); // Transition to error state.
- else if (old_state == TranslateInfoBarDelegate::kTranslateError &&
- state_ != TranslateInfoBarDelegate::kTranslateError)
- error_animation_->Hide(); // Transition from error state.
- else
- error_animation_->Stop(); // No transition.
+ translating_label_->SetVisible(translation_pending);
// Trigger layout and repaint.
Layout();
@@ -438,45 +357,19 @@ void TranslateInfoBar::Layout() {
icon_->SetBounds(InfoBar::kHorizontalPadding, InfoBar::OffsetY(this, icon_ps),
icon_ps.width(), icon_ps.height());
- // Check if translation is pending.
- gfx::Size translating_ps;
- if (translation_pending_)
- translating_ps = translating_label_->GetPreferredSize();
- int translating_width = translating_ps.width();
-
- // Handle error state.
- if (state_ == TranslateInfoBarDelegate::kTranslateError) {
- int available_text_width = std::max(GetAvailableWidth(), 0);
- if (translation_pending_) { // Layout "Translating..." label.
- translating_label_->SetBounds(icon_->bounds().right() +
- InfoBar::kIconLabelSpacing, InfoBar::OffsetY(this, translating_ps),
- std::min(translating_width, available_text_width),
- translating_ps.height());
- } else { // Layout error label and retry button.
- gfx::Size error_ps = error_label_->GetPreferredSize();
- error_label_->SetBounds(icon_->bounds().right() +
- InfoBar::kIconLabelSpacing, InfoBar::OffsetY(this, error_ps),
- std::min(error_ps.width(), available_text_width), error_ps.height());
- gfx::Size retry_ps = retry_button_->GetPreferredSize();
- retry_button_->SetBounds(error_label_->bounds().right() +
- InfoBar::kEndOfLabelSpacing, InfoBar::OffsetY(this, retry_ps),
- retry_ps.width(), retry_ps.height());
- }
- return;
- }
-
- // Handle normal states.
// Layout the options menu button on right of bar.
int available_width = InfoBar::GetAvailableWidth();
gfx::Size options_ps = options_menu_button_->GetPreferredSize();
options_menu_button_->SetBounds(available_width - options_ps.width(),
OffsetY(this, options_ps), options_ps.width(), options_ps.height());
+ TranslateInfoBarDelegate::TranslateState state = GetDelegate()->state();
+
// Layout the controls between icon and options i.e. labels, original language
// menu button, and if available, target language menu button.
views::MenuButton* button1 = original_language_menu_button_;
views::MenuButton* button2 =
- (state_ == TranslateInfoBarDelegate::kAfterTranslate ?
+ (state == TranslateInfoBarDelegate::kAfterTranslate ?
target_language_menu_button_ : NULL);
if (button2 && swapped_language_placeholders_) {
button1 = button2;
@@ -487,11 +380,16 @@ void TranslateInfoBar::Layout() {
gfx::Size label1_ps = label_1_->GetPreferredSize();
gfx::Size label2_ps = label_2_->GetPreferredSize();
gfx::Size label3_ps;
+ gfx::Size translating_ps;
if (label_3_)
label3_ps = label_3_->GetPreferredSize();
+ bool translation_pending = GetDelegate()->translation_pending();
+ if (translation_pending)
+ translating_ps = translating_label_->GetPreferredSize();
int text1_width = label1_ps.width();
int text2_width = label2_ps.width();
int text3_width = label3_ps.width();
+ int translating_width = translating_ps.width();
int total_text_width = text1_width + text2_width + text3_width +
translating_width;
if (total_text_width > available_text_width) {
@@ -533,7 +431,7 @@ void TranslateInfoBar::Layout() {
}
// If no translation is pending, layout revert button.
- if (!translation_pending_ && revert_button_) {
+ if (!translation_pending && revert_button_) {
gfx::Size revert_ps = revert_button_->GetPreferredSize();
revert_button_->SetBounds(prev_right + InfoBar::kEndOfLabelSpacing,
OffsetY(this, revert_ps), revert_ps.width(), revert_ps.height());
@@ -542,8 +440,8 @@ void TranslateInfoBar::Layout() {
// If translate state is kBeforeTranslate with no pending translation,
// layout accept and deny butons.
- if (state_ == TranslateInfoBarDelegate::kBeforeTranslate &&
- !translation_pending_) {
+ if (state == TranslateInfoBarDelegate::kBeforeTranslate &&
+ !translation_pending) {
gfx::Size accept_ps = accept_button_->GetPreferredSize();
accept_button_->SetBounds(prev_right + InfoBar::kEndOfLabelSpacing,
OffsetY(this, accept_ps), accept_ps.width(), accept_ps.height());
@@ -554,7 +452,7 @@ void TranslateInfoBar::Layout() {
}
// If translation is pending, layout "Translating..." label.
- if (translation_pending_) {
+ if (translation_pending) {
translating_label_->SetBounds(
prev_right + InfoBar::kEndOfLabelSpacing,
InfoBar::OffsetY(this, translating_ps),
@@ -562,47 +460,10 @@ void TranslateInfoBar::Layout() {
}
}
-void TranslateInfoBar::PaintBackground(gfx::Canvas* canvas) {
- // If we're not animating, simply paint background for current state.
- if (!error_animation_->IsAnimating()) {
- GetBackground(state_)->Paint(canvas, this);
- return;
- }
-
- // Animate cross-fading between error and normal states;
- // since all normal states use the same background, just use kAfterTranslate.
- if (error_animation_->IsShowing()) { // Transitioning to error state.
- // Fade out normal state.
- FadeBackground(canvas, 1.0 - error_animation_->GetCurrentValue(),
- TranslateInfoBarDelegate::kAfterTranslate);
- // Fade in error state.
- FadeBackground(canvas, error_animation_->GetCurrentValue(),
- TranslateInfoBarDelegate::kTranslateError);
- } else { // Transitioning from error state.
- // Fade out error state.
- FadeBackground(canvas, error_animation_->GetCurrentValue(),
- TranslateInfoBarDelegate::kTranslateError);
- // Fade in normal state.
- FadeBackground(canvas, 1.0 - error_animation_->GetCurrentValue(),
- TranslateInfoBarDelegate::kAfterTranslate);
- }
-}
-
// TranslateInfoBar, InfoBar overrides: ----------------------------------------
int TranslateInfoBar::GetAvailableWidth() const {
- int available_width = InfoBar::GetAvailableWidth() -
- icon_->bounds().right() - InfoBar::kIconLabelSpacing;
-
- // Handle the simplest state - error state, with the least no. of controls.
- if (state_ == TranslateInfoBarDelegate::kTranslateError) {
- if (!translation_pending_)
- available_width -= InfoBar::kEndOfLabelSpacing +
- retry_button_->bounds().width();
- return available_width;
- }
-
- // Handle the normal states, which have more controls.
+ gfx::Size icon_ps = icon_->GetPreferredSize();
// For language button, reserve spacing before and after it.
gfx::Size language_ps = original_language_menu_button_->GetPreferredSize();
int language_spacing = InfoBar::kButtonInLabelSpacing +
@@ -619,14 +480,17 @@ int TranslateInfoBar::GetAvailableWidth() const {
(label_3_ ? InfoBar::kButtonInLabelSpacing + InfoBar::kEndOfLabelSpacing :
(target_language_menu_button_ ? InfoBar::kEndOfLabelSpacing :
InfoBar::kButtonButtonSpacing));
- available_width -= options_ps.width() + options_spacing +
- language_ps.width() + language_spacing;
- if (state_ == TranslateInfoBarDelegate::kBeforeTranslate) {
+ int available_width = (InfoBar::GetAvailableWidth() -
+ options_ps.width() - options_spacing -
+ language_ps.width() - language_spacing -
+ icon_->bounds().right() - InfoBar::kIconLabelSpacing);
+ TranslateInfoBarDelegate::TranslateState state = GetDelegate()->state();
+ if (state == TranslateInfoBarDelegate::kBeforeTranslate) {
gfx::Size accept_ps = accept_button_->GetPreferredSize();
gfx::Size deny_ps = deny_button_->GetPreferredSize();
available_width -= accept_ps.width() + InfoBar::kEndOfLabelSpacing +
deny_ps.width() + InfoBar::kButtonButtonSpacing;
- } else if (state_ == TranslateInfoBarDelegate::kAfterTranslate) {
+ } else if (state == TranslateInfoBarDelegate::kAfterTranslate) {
gfx::Size target_ps = target_language_menu_button_->GetPreferredSize();
available_width -= target_ps.width() + InfoBar::kButtonInLabelSpacing;
}
@@ -647,7 +511,7 @@ void TranslateInfoBar::RunMenu(views::View* source, const gfx::Point& pt) {
}
case kMenuIDOriginalLanguage: {
- if (!translation_pending_) {
+ if (!translating_label_ || !translating_label_->IsVisible()) {
if (!original_language_menu_model_.get()) {
original_language_menu_model_.reset(
new LanguagesMenuModel(this, GetDelegate(), true));
@@ -663,7 +527,7 @@ void TranslateInfoBar::RunMenu(views::View* source, const gfx::Point& pt) {
}
case kMenuIDTargetLanguage: {
- if (!translation_pending_) {
+ if (!translating_label_ || !translating_label_->IsVisible()) {
if (!target_language_menu_model_.get()) {
target_language_menu_model_.reset(
new LanguagesMenuModel(this, GetDelegate(), false));
@@ -762,10 +626,9 @@ void TranslateInfoBar::ExecuteCommand(int command_id) {
void TranslateInfoBar::ButtonPressed(
views::Button* sender, const views::Event& event) {
- if (sender == accept_button_ || sender == retry_button_) {
+ if (sender == accept_button_) {
GetDelegate()->Translate();
- UpdateState(GetDelegate()->state(), GetDelegate()->translation_pending(),
- GetDelegate()->error_type());
+ UpdateState(GetDelegate()->state());
UMA_HISTOGRAM_COUNTS("Translate.Translate", 1);
} else if (sender == deny_button_) {
GetDelegate()->TranslationDeclined();
@@ -778,15 +641,6 @@ void TranslateInfoBar::ButtonPressed(
}
}
-// TranslateInfoBar, AnimationDelegate overrides: ------------------------------
-
-void TranslateInfoBar::AnimationProgressed(const Animation* animation) {
- if (animation == error_animation_.get())
- SchedulePaint();
- else
- InfoBar::AnimationProgressed(animation);
-}
-
// TranslateInfoBar, NotificationObserver overrides: ---------------------------
void TranslateInfoBar::Observe(NotificationType type,
@@ -796,12 +650,7 @@ void TranslateInfoBar::Observe(NotificationType type,
TabContents* tab = Source<TabContents>(source).ptr();
if (tab != GetDelegate()->tab_contents())
return;
- PageTranslatedDetails* page_translated_details =
- Details<PageTranslatedDetails>(details).ptr();
- UpdateState((page_translated_details->error_type == TranslateErrors::NONE ?
- TranslateInfoBarDelegate::kAfterTranslate :
- TranslateInfoBarDelegate::kTranslateError), false,
- page_translated_details->error_type);
+ UpdateState(TranslateInfoBarDelegate::kAfterTranslate);
}
// TranslateInfoBar, private: --------------------------------------------------
@@ -810,7 +659,7 @@ void TranslateInfoBar::CreateLabels() {
// Determine text for labels.
std::vector<size_t> offsets;
string16 message_text_utf16;
- GetDelegate()->GetMessageText(state_, &message_text_utf16, &offsets,
+ GetDelegate()->GetMessageText(&message_text_utf16, &offsets,
&swapped_language_placeholders_);
std::wstring message_text = UTF16ToWideHack(message_text_utf16);
@@ -842,8 +691,6 @@ void TranslateInfoBar::CreateLabels() {
label_3_ = CreateLabel(label_3);
AddChildView(label_3_);
}
- } else if (label_3_) {
- label_3_->SetText(std::wstring());
}
}
@@ -925,39 +772,21 @@ void TranslateInfoBar::OnLanguageModified(views::MenuButton* menu_button,
// Selecting an item from the "from language" menu in the before translate
// phase shouldn't trigger translation - http://crbug.com/36666
- if (state_ == TranslateInfoBarDelegate::kAfterTranslate) {
+ if (GetDelegate()->state() == TranslateInfoBarDelegate::kAfterTranslate) {
GetDelegate()->Translate();
- UpdateState(GetDelegate()->state(), GetDelegate()->translation_pending(),
- GetDelegate()->error_type());
+ UpdateState(GetDelegate()->state());
}
Layout();
SchedulePaint();
}
-void TranslateInfoBar::FadeBackground(gfx::Canvas* canvas,
- double animation_value, TranslateInfoBarDelegate::TranslateState state) {
- // Draw background into an offscreen buffer with alpha value per animation
- // value, then blend it back into the current canvas.
- canvas->saveLayerAlpha(NULL, static_cast<int>(animation_value * 255),
- SkCanvas::kARGB_NoClipLayer_SaveFlag);
- canvas->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode);
- GetBackground(state)->Paint(canvas, this);
- canvas->restore();
-}
-
inline TranslateInfoBarDelegate* TranslateInfoBar::GetDelegate() const {
return static_cast<TranslateInfoBarDelegate*>(delegate());
}
-inline InfoBarBackground* TranslateInfoBar::GetBackground(
- TranslateInfoBarDelegate::TranslateState state) const {
- return (state == TranslateInfoBarDelegate::kTranslateError ?
- error_background_.get() : normal_background_.get());
-}
-
inline int TranslateInfoBar::GetSpacingAfterFirstLanguageButton() const {
- return (state_ == TranslateInfoBarDelegate::kAfterTranslate ?
+ return (GetDelegate()->state() == TranslateInfoBarDelegate::kAfterTranslate ?
kButtonInLabelSpacing : 10);
}
diff --git a/chrome/browser/views/infobars/translate_infobars.h b/chrome/browser/views/infobars/translate_infobars.h
index 60e3dcb..713863a 100644
--- a/chrome/browser/views/infobars/translate_infobars.h
+++ b/chrome/browser/views/infobars/translate_infobars.h
@@ -9,7 +9,6 @@
#include "chrome/browser/translate/translate_infobars_delegates.h"
#include "chrome/browser/views/infobars/infobars.h"
#include "chrome/common/notification_registrar.h"
-#include "chrome/common/translate_errors.h"
#include "views/controls/menu/menu_2.h"
#include "views/controls/menu/view_menu_delegate.h"
@@ -33,9 +32,10 @@ class TranslateInfoBar : public InfoBar,
explicit TranslateInfoBar(TranslateInfoBarDelegate* delegate);
virtual ~TranslateInfoBar();
+ void UpdateState(TranslateInfoBarDelegate::TranslateState new_state);
+
// Overridden from views::View:
virtual void Layout();
- virtual void PaintBackground(gfx::Canvas* canvas);
// Overridden from views::MenuDelegate:
virtual void RunMenu(views::View* source, const gfx::Point& pt);
@@ -58,9 +58,6 @@ class TranslateInfoBar : public InfoBar,
// Overridden from views::ButtonListener:
virtual void ButtonPressed(views::Button* sender, const views::Event& event);
- // Overridden from AnimationDelegate:
- virtual void AnimationProgressed(const Animation* animation);
-
private:
void CreateLabels();
views::Label* CreateLabel(const std::wstring& label);
@@ -68,40 +65,22 @@ class TranslateInfoBar : public InfoBar,
bool normal_has_border);
gfx::Point DetermineMenuPositionAndAlignment(views::MenuButton* menu_button,
views::Menu2::Alignment* alignment);
- void UpdateState(TranslateInfoBarDelegate::TranslateState new_state,
- bool translation_pending, TranslateErrors::Type error_type);
void OnLanguageModified(views::MenuButton* menu_button,
int new_language_index);
- void FadeBackground(gfx::Canvas* canvas, double animation_value,
- TranslateInfoBarDelegate::TranslateState state);
- inline TranslateInfoBarDelegate* GetDelegate() const;
- inline InfoBarBackground* GetBackground(
- TranslateInfoBarDelegate::TranslateState new_state) const;
inline int GetSpacingAfterFirstLanguageButton() const;
-
- // Infobar keeps track of the state it is displaying, which should match that
- // in the TranslateInfoBarDelegate. UI needs to keep track separately because
- // infobar may receive PAGE_TRANSLATED notifications before delegate does, in
- // which case, delegate's state is not updated and hence can't be used to
- // update display. After the notification is sent out to all observers, both
- // infobar and delegate would end up with the same state.
- TranslateInfoBarDelegate::TranslateState state_;
- bool translation_pending_;
- TranslateErrors::Type error_type_;
+ inline TranslateInfoBarDelegate* GetDelegate() const;
views::ImageView* icon_;
views::Label* label_1_;
views::Label* label_2_;
views::Label* label_3_;
views::Label* translating_label_;
- views::Label* error_label_;
TranslateTextButton* accept_button_;
TranslateTextButton* deny_button_;
views::MenuButton* original_language_menu_button_;
views::MenuButton* target_language_menu_button_;
TranslateTextButton* revert_button_;
views::MenuButton* options_menu_button_;
- TranslateTextButton* retry_button_;
scoped_ptr<LanguagesMenuModel> original_language_menu_model_;
scoped_ptr<LanguagesMenuModel> target_language_menu_model_;
@@ -116,10 +95,6 @@ class TranslateInfoBar : public InfoBar,
NotificationRegistrar notification_registrar_;
- scoped_ptr<InfoBarBackground> normal_background_;
- scoped_ptr<InfoBarBackground> error_background_;
- scoped_ptr<SlideAnimation> error_animation_;
-
DISALLOW_COPY_AND_ASSIGN(TranslateInfoBar);
};