OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/infobars/before_translate_infobar.h" | 5 #include "chrome/browser/ui/views/infobars/before_translate_infobar.h" |
6 | 6 |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/translate/translate_infobar_delegate.h" | 8 #include "chrome/browser/translate/translate_infobar_delegate.h" |
9 #include "grit/generated_resources.h" | 9 #include "grit/generated_resources.h" |
10 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 (kButtonButtonSpacing + | 154 (kButtonButtonSpacing + |
155 never_translate_button_->GetPreferredSize().width())) + | 155 never_translate_button_->GetPreferredSize().width())) + |
156 ((always_translate_button_ == NULL) ? 0 : | 156 ((always_translate_button_ == NULL) ? 0 : |
157 (kButtonButtonSpacing + | 157 (kButtonButtonSpacing + |
158 always_translate_button_->GetPreferredSize().width())) + | 158 always_translate_button_->GetPreferredSize().width())) + |
159 (kEndOfLabelSpacing + options_menu_button_->GetPreferredSize().width()); | 159 (kEndOfLabelSpacing + options_menu_button_->GetPreferredSize().width()); |
160 } | 160 } |
161 | 161 |
162 void BeforeTranslateInfoBar::ButtonPressed(views::Button* sender, | 162 void BeforeTranslateInfoBar::ButtonPressed(views::Button* sender, |
163 const views::Event& event) { | 163 const views::Event& event) { |
| 164 if (!owned()) |
| 165 return; // We're closing; don't call anything, it might access the owner. |
164 TranslateInfoBarDelegate* delegate = GetDelegate(); | 166 TranslateInfoBarDelegate* delegate = GetDelegate(); |
165 if (sender == accept_button_) { | 167 if (sender == accept_button_) { |
166 delegate->Translate(); | 168 delegate->Translate(); |
167 } else if (sender == deny_button_) { | 169 } else if (sender == deny_button_) { |
168 delegate->TranslationDeclined(); | 170 delegate->TranslationDeclined(); |
169 RemoveSelf(); | 171 RemoveSelf(); |
170 } else if (sender == never_translate_button_) { | 172 } else if (sender == never_translate_button_) { |
171 delegate->NeverTranslatePageLanguage(); | 173 delegate->NeverTranslatePageLanguage(); |
172 } else if (sender == always_translate_button_) { | 174 } else if (sender == always_translate_button_) { |
173 delegate->AlwaysTranslatePageLanguage(); | 175 delegate->AlwaysTranslatePageLanguage(); |
174 } else { | 176 } else { |
175 TranslateInfoBarBase::ButtonPressed(sender, event); | 177 TranslateInfoBarBase::ButtonPressed(sender, event); |
176 } | 178 } |
177 } | 179 } |
178 | 180 |
179 void BeforeTranslateInfoBar::OriginalLanguageChanged() { | 181 void BeforeTranslateInfoBar::OriginalLanguageChanged() { |
180 // Tests can call this function when the infobar has never been added to a | 182 // Tests can call this function when the infobar has never been added to a |
181 // view hierarchy and thus there is no button. | 183 // view hierarchy and thus there is no button. |
182 if (language_menu_button_) { | 184 if (language_menu_button_) { |
183 UpdateLanguageButtonText(language_menu_button_, | 185 UpdateLanguageButtonText(language_menu_button_, |
184 LanguagesMenuModel::ORIGINAL); | 186 LanguagesMenuModel::ORIGINAL); |
185 } | 187 } |
186 } | 188 } |
187 | 189 |
188 void BeforeTranslateInfoBar::RunMenu(View* source, const gfx::Point& pt) { | 190 void BeforeTranslateInfoBar::RunMenu(View* source, const gfx::Point& pt) { |
| 191 if (!owned()) |
| 192 return; // We're closing; don't call anything, it might access the owner. |
189 ui::MenuModel* menu_model = NULL; | 193 ui::MenuModel* menu_model = NULL; |
190 views::MenuButton* button = NULL; | 194 views::MenuButton* button = NULL; |
191 views::MenuItemView::AnchorPosition anchor = views::MenuItemView::TOPLEFT; | 195 views::MenuItemView::AnchorPosition anchor = views::MenuItemView::TOPLEFT; |
192 if (source == language_menu_button_) { | 196 if (source == language_menu_button_) { |
193 menu_model = &languages_menu_model_; | 197 menu_model = &languages_menu_model_; |
194 button = language_menu_button_; | 198 button = language_menu_button_; |
195 } else { | 199 } else { |
196 DCHECK_EQ(options_menu_button_, source); | 200 DCHECK_EQ(options_menu_button_, source); |
197 menu_model = &options_menu_model_; | 201 menu_model = &options_menu_model_; |
198 button = options_menu_button_; | 202 button = options_menu_button_; |
199 anchor = views::MenuItemView::TOPRIGHT; | 203 anchor = views::MenuItemView::TOPRIGHT; |
200 } | 204 } |
201 RunMenuAt(menu_model, button, anchor); | 205 RunMenuAt(menu_model, button, anchor); |
202 // TODO(pkasting): this may be deleted after rewrite. | |
203 } | 206 } |
OLD | NEW |