diff options
-rw-r--r-- | chrome/browser/cocoa/translate_infobar.h | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/translate_infobar.mm | 4 | ||||
-rw-r--r-- | chrome/browser/cocoa/translate_infobar_unittest.mm | 16 | ||||
-rw-r--r-- | chrome/browser/gtk/translate_infobars.cc | 3 | ||||
-rw-r--r-- | chrome/browser/translate/options_menu_model.cc | 34 | ||||
-rw-r--r-- | chrome/browser/translate/translate_infobars_delegates.cc | 72 | ||||
-rw-r--r-- | chrome/browser/views/infobars/translate_infobars.cc | 3 |
7 files changed, 53 insertions, 82 deletions
diff --git a/chrome/browser/cocoa/translate_infobar.h b/chrome/browser/cocoa/translate_infobar.h index 3df507b..2c43c3a 100644 --- a/chrome/browser/cocoa/translate_infobar.h +++ b/chrome/browser/cocoa/translate_infobar.h @@ -81,4 +81,7 @@ class TranslateNotificationObserverBridge; // Verifies that the layout of the infobar is correct for |state|. - (bool)verifyLayout:(TranslateInfoBarDelegate::TranslateState)state; +// Teardown and rebuild the options menu. +- (void)rebuildOptionsMenu; + @end diff --git a/chrome/browser/cocoa/translate_infobar.mm b/chrome/browser/cocoa/translate_infobar.mm index bb277db..28b1fb7 100644 --- a/chrome/browser/cocoa/translate_infobar.mm +++ b/chrome/browser/cocoa/translate_infobar.mm @@ -178,9 +178,6 @@ class TranslateNotificationObserverBridge : // Completely rebuild "from" and "to" language menus from the data model. - (void)populateLanguageMenus; -// Teardown and rebuild the options menu. -- (void)rebuildOptionsMenu; - @end #pragma mark TranslateInfoBarController class @@ -262,7 +259,6 @@ class TranslateNotificationObserverBridge : - (void)updateState { // Fixup our GUI. [self loadLabelText]; - [self rebuildOptionsMenu]; [self resizeAndSetControlVisibility]; [self layout]; diff --git a/chrome/browser/cocoa/translate_infobar_unittest.mm b/chrome/browser/cocoa/translate_infobar_unittest.mm index 9a7042a..f871139 100644 --- a/chrome/browser/cocoa/translate_infobar_unittest.mm +++ b/chrome/browser/cocoa/translate_infobar_unittest.mm @@ -122,10 +122,11 @@ TEST_F(TranslationBarInfoTest, OptionsMenuItemsHookedUp) { .Times(0); CreateInfoBar(); + [infobar_controller rebuildOptionsMenu]; NSMenu* optionsMenu = [infobar_controller optionsMenu]; NSArray* optionsMenuItems = [optionsMenu itemArray]; - EXPECT_EQ([optionsMenuItems count], 4U); + EXPECT_EQ([optionsMenuItems count], 5U); // First item is the options menu button's title, so there's no need to test // that the target on that is setup correctly. @@ -133,9 +134,16 @@ TEST_F(TranslationBarInfoTest, OptionsMenuItemsHookedUp) { NSMenuItem* item = [optionsMenuItems objectAtIndex:i]; EXPECT_EQ([item target], infobar_controller.get()); } - NSMenuItem* neverTranslateLanguateItem = [optionsMenuItems objectAtIndex:1]; - NSMenuItem* neverTranslateSiteItem = [optionsMenuItems objectAtIndex:2]; - NSMenuItem* aboutTranslateItem = [optionsMenuItems objectAtIndex:3]; + NSMenuItem* alwaysTranslateLanguateItem = [optionsMenuItems objectAtIndex:1]; + NSMenuItem* neverTranslateLanguateItem = [optionsMenuItems objectAtIndex:2]; + NSMenuItem* neverTranslateSiteItem = [optionsMenuItems objectAtIndex:3]; + NSMenuItem* aboutTranslateItem = [optionsMenuItems objectAtIndex:4]; + + { + EXPECT_CALL(*infobar_delegate, ToggleAlwaysTranslate()) + .Times(1); + [infobar_controller menuItemSelected:alwaysTranslateLanguateItem]; + } { EXPECT_CALL(*infobar_delegate, ToggleLanguageBlacklist()) diff --git a/chrome/browser/gtk/translate_infobars.cc b/chrome/browser/gtk/translate_infobars.cc index 4cffe6c0..d83e7a2 100644 --- a/chrome/browser/gtk/translate_infobars.cc +++ b/chrome/browser/gtk/translate_infobars.cc @@ -295,9 +295,6 @@ void TranslateInfoBar::UpdateState( NOTIMPLEMENTED() << "Received state " << new_state; } } - - // Clear options menu model so that it'll be created for new state. - options_menu_model_.reset(); } void TranslateInfoBar::SetLabels() { diff --git a/chrome/browser/translate/options_menu_model.cc b/chrome/browser/translate/options_menu_model.cc index 4364e07..5f0dd66 100644 --- a/chrome/browser/translate/options_menu_model.cc +++ b/chrome/browser/translate/options_menu_model.cc @@ -12,26 +12,20 @@ OptionsMenuModel::OptionsMenuModel(menus::SimpleMenuModel::Delegate* delegate, TranslateInfoBarDelegate* translate_delegate) : menus::SimpleMenuModel(delegate) { - string16 original_language = - translate_delegate->GetDisplayNameForLocale( - translate_delegate->original_lang_code()); - TranslateInfoBarDelegate::TranslateState state = translate_delegate->state(); - if (state == TranslateInfoBarDelegate::kBeforeTranslate) { - AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG, - l10n_util::GetStringFUTF16( - IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG, - original_language)); - AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE, - l10n_util::GetStringUTF16( - IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_SITE)); - } else if (state == TranslateInfoBarDelegate::kAfterTranslate) { - string16 target_language = - translate_delegate->GetDisplayNameForLocale( - translate_delegate->target_lang_code()); - AddCheckItem(IDC_TRANSLATE_OPTIONS_ALWAYS, - l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS, - original_language, target_language)); - } + string16 original_language = translate_delegate->GetDisplayNameForLocale( + translate_delegate->original_lang_code()); + string16 target_language = translate_delegate->GetDisplayNameForLocale( + translate_delegate->target_lang_code()); + AddCheckItem(IDC_TRANSLATE_OPTIONS_ALWAYS, + l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS, + original_language, target_language)); + AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG, + l10n_util::GetStringFUTF16( + IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG, + original_language)); + AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE, + l10n_util::GetStringUTF16( + IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_SITE)); AddItemWithStringId(IDC_TRANSLATE_OPTIONS_ABOUT, IDS_TRANSLATE_INFOBAR_OPTIONS_ABOUT); } diff --git a/chrome/browser/translate/translate_infobars_delegates.cc b/chrome/browser/translate/translate_infobars_delegates.cc index aeaef50..b0c3540 100644 --- a/chrome/browser/translate/translate_infobars_delegates.cc +++ b/chrome/browser/translate/translate_infobars_delegates.cc @@ -95,69 +95,45 @@ void TranslateInfoBarDelegate::TranslationDeclined() { } bool TranslateInfoBarDelegate::IsLanguageBlacklisted() { - if (state_ == kBeforeTranslate) { - never_translate_language_ = - prefs_->IsLanguageBlacklisted(original_lang_code()); - return never_translate_language_; - } - NOTREACHED() << "Invalid mehod called for translate state"; - return false; + never_translate_language_ = + prefs_->IsLanguageBlacklisted(original_lang_code()); + return never_translate_language_; } bool TranslateInfoBarDelegate::IsSiteBlacklisted() { - if (state_ == kBeforeTranslate) { - never_translate_site_ = prefs_->IsSiteBlacklisted(site_); - return never_translate_site_; - } - NOTREACHED() << "Invalid mehod called for translate state"; - return false; + never_translate_site_ = prefs_->IsSiteBlacklisted(site_); + return never_translate_site_; } bool TranslateInfoBarDelegate::ShouldAlwaysTranslate() { - if (state_ == kAfterTranslate) { - always_translate_ = prefs_->IsLanguagePairWhitelisted(original_lang_code(), - target_lang_code()); - return always_translate_; - } - NOTREACHED() << "Invalid mehod called for translate state"; - return false; + always_translate_ = prefs_->IsLanguagePairWhitelisted(original_lang_code(), + target_lang_code()); + return always_translate_; } void TranslateInfoBarDelegate::ToggleLanguageBlacklist() { - if (state_ == kBeforeTranslate) { - never_translate_language_ = !never_translate_language_; - if (never_translate_language_) - prefs_->BlacklistLanguage(original_lang_code()); - else - prefs_->RemoveLanguageFromBlacklist(original_lang_code()); - } else { - NOTREACHED() << "Invalid method called for translate state"; - } + never_translate_language_ = !never_translate_language_; + if (never_translate_language_) + prefs_->BlacklistLanguage(original_lang_code()); + else + prefs_->RemoveLanguageFromBlacklist(original_lang_code()); } void TranslateInfoBarDelegate::ToggleSiteBlacklist() { - if (state_ == kBeforeTranslate) { - never_translate_site_ = !never_translate_site_; - if (never_translate_site_) - prefs_->BlacklistSite(site_); - else - prefs_->RemoveSiteFromBlacklist(site_); - } else { - NOTREACHED() << "Invalid mehod called for translate state"; - } + never_translate_site_ = !never_translate_site_; + if (never_translate_site_) + prefs_->BlacklistSite(site_); + else + prefs_->RemoveSiteFromBlacklist(site_); } void TranslateInfoBarDelegate::ToggleAlwaysTranslate() { - if (state_ == kAfterTranslate) { - always_translate_ = !always_translate_; - if (always_translate_) - prefs_->WhitelistLanguagePair(original_lang_code(), target_lang_code()); - else - prefs_->RemoveLanguagePairFromWhitelist(original_lang_code(), - target_lang_code()); - } else { - NOTREACHED() << "Invalid mehod called for translate state"; - } + always_translate_ = !always_translate_; + if (always_translate_) + prefs_->WhitelistLanguagePair(original_lang_code(), target_lang_code()); + else + prefs_->RemoveLanguagePairFromWhitelist(original_lang_code(), + target_lang_code()); } void TranslateInfoBarDelegate::GetMessageText(string16 *message_text, diff --git a/chrome/browser/views/infobars/translate_infobars.cc b/chrome/browser/views/infobars/translate_infobars.cc index 7217b64..0543898 100644 --- a/chrome/browser/views/infobars/translate_infobars.cc +++ b/chrome/browser/views/infobars/translate_infobars.cc @@ -332,9 +332,6 @@ void TranslateInfoBar::UpdateState( // Trigger layout and repaint. Layout(); SchedulePaint(); - - // Clear options menu model so that it'll be created for new state. - options_menu_model_.reset(); } // TranslateInfoBar, views::View overrides: ------------------------------------ |