Commit 694e2760 authored by Allen Bauer's avatar Allen Bauer Committed by Commit Bot

Refactor to use AddChildView<T>, AddTab<T> and Tab::SetTitleText for translate bubble.

Bug: 974811
Change-Id: Ie7d2b0cffaa96a908b5c5a905b3e4e928452a436
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1658651Reviewed-by: default avataranthonyvd <anthonyvd@chromium.org>
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#672244}
parent d32ce02f
...@@ -80,7 +80,7 @@ class AdvancedViewContainer : public views::View { ...@@ -80,7 +80,7 @@ class AdvancedViewContainer : public views::View {
} // namespace } // namespace
// static // static
TranslateBubbleView* TranslateBubbleView::translate_bubble_view_ = NULL; TranslateBubbleView* TranslateBubbleView::translate_bubble_view_ = nullptr;
TranslateBubbleView::~TranslateBubbleView() { TranslateBubbleView::~TranslateBubbleView() {
// A child view could refer to a model which is owned by this class when // A child view could refer to a model which is owned by this class when
...@@ -223,39 +223,28 @@ void TranslateBubbleView::Init() { ...@@ -223,39 +223,28 @@ void TranslateBubbleView::Init() {
// Create different view based on user selection in // Create different view based on user selection in
// kUseButtonTranslateBubbleUI. // kUseButtonTranslateBubbleUI.
if (bubble_ui_model_ == language::TranslateUIBubbleModel::BUTTON_GM2) { if (bubble_ui_model_ == language::TranslateUIBubbleModel::BUTTON_GM2) {
before_translate_view_ = GM2CreateViewBeforeTranslate(); before_translate_view_ = AddChildView(GM2CreateViewBeforeTranslate());
translating_view_ = GM2CreateViewTranslating(); translating_view_ = AddChildView(GM2CreateViewTranslating());
after_translate_view_ = GM2CreateViewAfterTranslate(); after_translate_view_ = AddChildView(GM2CreateViewAfterTranslate());
error_view_ = CreateViewError(); error_view_ = AddChildView(CreateViewError());
advanced_view_ = CreateViewAdvanced(); advanced_view_ = AddChildView(CreateViewAdvanced());
} else if (bubble_ui_model_ == language::TranslateUIBubbleModel::TAB) { } else if (bubble_ui_model_ == language::TranslateUIBubbleModel::TAB) {
// |tab_translate_view| is the child view being used before/during/after // |tab_translate_view| is the child view being used before/during/after
// translate in TAB UI. // translate in TAB UI.
tab_translate_view_ = CreateViewTab(); tab_translate_view_ = AddChildView(CreateViewTab());
before_translate_view_ = tab_translate_view_; before_translate_view_ = tab_translate_view_;
translating_view_ = tab_translate_view_; translating_view_ = tab_translate_view_;
after_translate_view_ = tab_translate_view_; after_translate_view_ = tab_translate_view_;
advanced_view_source_ = TabUiCreateViewAdvanedSource(); advanced_view_source_ = AddChildView(TabUiCreateViewAdvanedSource());
advanced_view_target_ = TabUiCreateViewAdvanedTarget(); advanced_view_target_ = AddChildView(TabUiCreateViewAdvanedTarget());
error_view_ = CreateViewError(); error_view_ = AddChildView(CreateViewError());
} else { } else {
before_translate_view_ = CreateViewBeforeTranslate(); before_translate_view_ = AddChildView(CreateViewBeforeTranslate());
translating_view_ = CreateViewTranslating(); translating_view_ = AddChildView(CreateViewTranslating());
after_translate_view_ = CreateViewAfterTranslate(); after_translate_view_ = AddChildView(CreateViewAfterTranslate());
error_view_ = CreateViewError(); advanced_view_ = AddChildView(CreateViewAdvanced());
advanced_view_ = CreateViewAdvanced(); error_view_ = AddChildView(CreateViewError());
} }
AddChildView(before_translate_view_);
AddChildView(translating_view_);
AddChildView(after_translate_view_);
// TAB UI has two additional advanced view.
if (bubble_ui_model_ == language::TranslateUIBubbleModel::TAB) {
AddChildView(advanced_view_source_);
AddChildView(advanced_view_target_);
} else {
AddChildView(advanced_view_);
}
AddChildView(error_view_);
AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)); AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
...@@ -379,7 +368,7 @@ void TranslateBubbleView::WindowClosing() { ...@@ -379,7 +368,7 @@ void TranslateBubbleView::WindowClosing() {
// because we'll be destroyed asynchronously and the shown state will be // because we'll be destroyed asynchronously and the shown state will be
// checked before then. // checked before then.
DCHECK_EQ(translate_bubble_view_, this); DCHECK_EQ(translate_bubble_view_, this);
translate_bubble_view_ = NULL; translate_bubble_view_ = nullptr;
} }
bool TranslateBubbleView::AcceleratorPressed( bool TranslateBubbleView::AcceleratorPressed(
...@@ -596,27 +585,11 @@ TranslateBubbleView::TranslateBubbleView( ...@@ -596,27 +585,11 @@ TranslateBubbleView::TranslateBubbleView(
translate::TranslateErrors::Type error_type, translate::TranslateErrors::Type error_type,
content::WebContents* web_contents) content::WebContents* web_contents)
: LocationBarBubbleDelegateView(anchor_view, gfx::Point(), web_contents), : LocationBarBubbleDelegateView(anchor_view, gfx::Point(), web_contents),
before_translate_view_(NULL),
translating_view_(NULL),
after_translate_view_(NULL),
error_view_(NULL),
advanced_view_(NULL),
tab_translate_view_(NULL),
advanced_view_source_(NULL),
advanced_view_target_(NULL),
source_language_combobox_(NULL),
target_language_combobox_(NULL),
before_always_translate_checkbox_(NULL),
advanced_always_translate_checkbox_(NULL),
advanced_cancel_button_(NULL),
advanced_done_button_(NULL),
before_translate_options_button_(NULL),
model_(std::move(model)), model_(std::move(model)),
error_type_(error_type), error_type_(error_type),
is_in_incognito_window_( is_in_incognito_window_(
web_contents && web_contents->GetBrowserContext()->IsOffTheRecord()), web_contents && web_contents->GetBrowserContext()->IsOffTheRecord()),
bubble_ui_model_(language::GetTranslateUiBubbleModel()), bubble_ui_model_(language::GetTranslateUiBubbleModel()) {
should_always_translate_(false) {
DCHECK(anchor_view); DCHECK(anchor_view);
translate_bubble_view_ = this; translate_bubble_view_ = this;
if (web_contents) // web_contents can be null in unit_tests. if (web_contents) // web_contents can be null in unit_tests.
...@@ -688,20 +661,12 @@ void TranslateBubbleView::ConfirmAdvancedOptions() { ...@@ -688,20 +661,12 @@ void TranslateBubbleView::ConfirmAdvancedOptions() {
SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE); SwitchView(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE);
SizeToContents(); SizeToContents();
} else { } else {
// Remove and re-add the child view to update tab title without modifying base::string16 original_language_name;
// existing tabbed_pane class. RemoveChildView doesn't delete the child base::string16 target_language_name;
// view. It only removes child view from the children() vector. DCHECK(tabbed_pane_);
// TODO(crbug.com/974811): Update tab title using setter and getter when UpdateLanguageNames(&original_language_name, &target_language_name);
// it's available. tabbed_pane_->GetTabAt(0)->SetTitleText(original_language_name);
RemoveChildView(before_translate_view_); tabbed_pane_->GetTabAt(1)->SetTitleText(target_language_name);
delete before_translate_view_;
tab_translate_view_ = CreateViewTab();
before_translate_view_ = tab_translate_view_;
translating_view_ = tab_translate_view_;
after_translate_view_ = tab_translate_view_;
AddChildView(tab_translate_view_);
SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE); SwitchView(TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE);
tabbed_pane_->SelectTabAt(1); tabbed_pane_->SelectTabAt(1);
} }
...@@ -779,7 +744,7 @@ void TranslateBubbleView::UpdateChildVisibilities() { ...@@ -779,7 +744,7 @@ void TranslateBubbleView::UpdateChildVisibilities() {
Layout(); Layout();
} }
views::View* TranslateBubbleView::CreateViewBeforeTranslate() { std::unique_ptr<views::View> TranslateBubbleView::CreateViewBeforeTranslate() {
base::string16 original_language_name = base::string16 original_language_name =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
if (original_language_name.empty()) { if (original_language_name.empty()) {
...@@ -787,7 +752,7 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() { ...@@ -787,7 +752,7 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_UNKNOWN_LANGUAGE); l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_UNKNOWN_LANGUAGE);
} }
views::View* view = new views::View(); auto view = std::make_unique<views::View>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -814,13 +779,14 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() { ...@@ -814,13 +779,14 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
if (model_->ShouldShowAlwaysTranslateShortcut()) { if (model_->ShouldShowAlwaysTranslateShortcut()) {
layout->StartRow(views::GridLayout::kFixedSize, kCheckboxColumnSetId); layout->StartRow(views::GridLayout::kFixedSize, kCheckboxColumnSetId);
before_always_translate_checkbox_ = new views::Checkbox( auto before_always_translate_checkbox = std::make_unique<views::Checkbox>(
l10n_util::GetStringFUTF16( l10n_util::GetStringFUTF16(
IDS_TRANSLATE_BUBBLE_ALWAYS_TRANSLATE_LANG, IDS_TRANSLATE_BUBBLE_ALWAYS_TRANSLATE_LANG,
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex())), model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex())),
this); this);
before_always_translate_checkbox_->SetID(BUTTON_ID_ALWAYS_TRANSLATE); before_always_translate_checkbox->SetID(BUTTON_ID_ALWAYS_TRANSLATE);
layout->AddView(before_always_translate_checkbox_); before_always_translate_checkbox_ =
layout->AddView(std::move(before_always_translate_checkbox));
} }
layout->StartRowWithPadding( layout->StartRowWithPadding(
...@@ -832,17 +798,20 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() { ...@@ -832,17 +798,20 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
this, l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT)); this, l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT));
accept_button->SetID(BUTTON_ID_TRANSLATE); accept_button->SetID(BUTTON_ID_TRANSLATE);
accept_button->SetIsDefault(true); accept_button->SetIsDefault(true);
before_translate_options_button_ = new views::MdTextButtonWithDownArrow( auto before_translate_options_button =
this, std::make_unique<views::MdTextButtonWithDownArrow>(
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_OPTIONS_MENU_BUTTON)); this,
before_translate_options_button_->SetID(BUTTON_ID_OPTIONS_MENU); l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_OPTIONS_MENU_BUTTON));
before_translate_options_button_->set_request_focus_on_press(true); before_translate_options_button->SetID(BUTTON_ID_OPTIONS_MENU);
before_translate_options_button->set_request_focus_on_press(true);
if (views::PlatformStyle::kIsOkButtonLeading) { if (views::PlatformStyle::kIsOkButtonLeading) {
layout->AddView(std::move(accept_button)); layout->AddView(std::move(accept_button));
layout->AddView(before_translate_options_button_); before_translate_options_button_ =
layout->AddView(std::move(before_translate_options_button));
} else { } else {
layout->AddView(before_translate_options_button_); before_translate_options_button_ =
layout->AddView(std::move(before_translate_options_button));
layout->AddView(std::move(accept_button)); layout->AddView(std::move(accept_button));
} }
...@@ -859,20 +828,13 @@ std::unique_ptr<views::View> TranslateBubbleView::CreateEmptyPane() { ...@@ -859,20 +828,13 @@ std::unique_ptr<views::View> TranslateBubbleView::CreateEmptyPane() {
// This view is shown if "Tab" is selected for feature // This view is shown if "Tab" is selected for feature
// kUseButtonTranslateBubbleUi before/on/after translate. // kUseButtonTranslateBubbleUi before/on/after translate.
views::View* TranslateBubbleView::CreateViewTab() { std::unique_ptr<views::View> TranslateBubbleView::CreateViewTab() {
base::string16 original_language_name = base::string16 original_language_name;
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); base::string16 target_language_name;
previous_source_language_index_ = model_->GetOriginalLanguageIndex(); UpdateLanguageNames(&original_language_name, &target_language_name);
base::string16 target_language_name =
model_->GetLanguageNameAt(model_->GetTargetLanguageIndex());
previous_target_language_index_ = model_->GetTargetLanguageIndex();
if (original_language_name.empty()) {
original_language_name =
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_UNKNOWN_LANGUAGE);
}
ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
views::View* view = new views::View(); auto view = std::make_unique<views::View>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -961,13 +923,13 @@ views::View* TranslateBubbleView::CreateViewTab() { ...@@ -961,13 +923,13 @@ views::View* TranslateBubbleView::CreateViewTab() {
return view; return view;
} }
views::View* TranslateBubbleView::GM2CreateView( std::unique_ptr<views::View> TranslateBubbleView::GM2CreateView(
std::unique_ptr<views::Button> action_button, std::unique_ptr<views::Button> action_button,
std::unique_ptr<views::View> status_indicator, std::unique_ptr<views::View> status_indicator,
bool active_option_button, bool active_option_button,
std::unique_ptr<views::Label> source_language_label, std::unique_ptr<views::Label> source_language_label,
std::unique_ptr<views::Label> target_language_label) { std::unique_ptr<views::Label> target_language_label) {
views::View* view = new views::View(); auto view = std::make_unique<views::View>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
...@@ -1076,7 +1038,8 @@ views::View* TranslateBubbleView::GM2CreateView( ...@@ -1076,7 +1038,8 @@ views::View* TranslateBubbleView::GM2CreateView(
return view; return view;
} }
views::View* TranslateBubbleView::GM2CreateViewBeforeTranslate() { std::unique_ptr<views::View>
TranslateBubbleView::GM2CreateViewBeforeTranslate() {
base::string16 gm2_source_language = base::string16 gm2_source_language =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
base::string16 gm2_target_language = base::string16 gm2_target_language =
...@@ -1112,7 +1075,7 @@ views::View* TranslateBubbleView::GM2CreateViewBeforeTranslate() { ...@@ -1112,7 +1075,7 @@ views::View* TranslateBubbleView::GM2CreateViewBeforeTranslate() {
std::move(gm2_target_language_label)); std::move(gm2_target_language_label));
} }
views::View* TranslateBubbleView::GM2CreateViewTranslating() { std::unique_ptr<views::View> TranslateBubbleView::GM2CreateViewTranslating() {
base::string16 gm2_source_language = base::string16 gm2_source_language =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
base::string16 gm2_target_language = base::string16 gm2_target_language =
...@@ -1145,11 +1108,11 @@ views::View* TranslateBubbleView::GM2CreateViewTranslating() { ...@@ -1145,11 +1108,11 @@ views::View* TranslateBubbleView::GM2CreateViewTranslating() {
std::move(gm2_target_language_label)); std::move(gm2_target_language_label));
} }
views::View* TranslateBubbleView::CreateViewTranslating() { std::unique_ptr<views::View> TranslateBubbleView::CreateViewTranslating() {
base::string16 target_language_name = base::string16 target_language_name =
model_->GetLanguageNameAt(model_->GetTargetLanguageIndex()); model_->GetLanguageNameAt(model_->GetTargetLanguageIndex());
views::View* view = new views::View(); auto view = std::make_unique<views::View>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -1184,7 +1147,8 @@ views::View* TranslateBubbleView::CreateViewTranslating() { ...@@ -1184,7 +1147,8 @@ views::View* TranslateBubbleView::CreateViewTranslating() {
return view; return view;
} }
views::View* TranslateBubbleView::GM2CreateViewAfterTranslate() { std::unique_ptr<views::View>
TranslateBubbleView::GM2CreateViewAfterTranslate() {
base::string16 gm2_source_language = base::string16 gm2_source_language =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
base::string16 gm2_target_language = base::string16 gm2_target_language =
...@@ -1220,8 +1184,8 @@ views::View* TranslateBubbleView::GM2CreateViewAfterTranslate() { ...@@ -1220,8 +1184,8 @@ views::View* TranslateBubbleView::GM2CreateViewAfterTranslate() {
std::move(gm2_target_language_label)); std::move(gm2_target_language_label));
} }
views::View* TranslateBubbleView::CreateViewAfterTranslate() { std::unique_ptr<views::View> TranslateBubbleView::CreateViewAfterTranslate() {
views::View* view = new views::View(); auto view = std::make_unique<views::View>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -1251,19 +1215,19 @@ views::View* TranslateBubbleView::CreateViewAfterTranslate() { ...@@ -1251,19 +1215,19 @@ views::View* TranslateBubbleView::CreateViewAfterTranslate() {
button->SetID(BUTTON_ID_SHOW_ORIGINAL); button->SetID(BUTTON_ID_SHOW_ORIGINAL);
layout->AddView(std::move(button)); layout->AddView(std::move(button));
views::Button* options_menu_button = new views::MdTextButtonWithDownArrow( auto options_menu_button = std::make_unique<views::MdTextButtonWithDownArrow>(
this, this,
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_OPTIONS_MENU_BUTTON)); l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_OPTIONS_MENU_BUTTON));
options_menu_button->SetID(BUTTON_ID_OPTIONS_MENU); options_menu_button->SetID(BUTTON_ID_OPTIONS_MENU);
options_menu_button->set_request_focus_on_press(true); options_menu_button->set_request_focus_on_press(true);
layout->AddView(options_menu_button); layout->AddView(std::move(options_menu_button));
return view; return view;
} }
views::View* TranslateBubbleView::CreateViewError() { std::unique_ptr<views::View> TranslateBubbleView::CreateViewError() {
views::View* view = new views::View(); auto view = std::make_unique<views::View>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -1304,41 +1268,36 @@ views::View* TranslateBubbleView::CreateViewError() { ...@@ -1304,41 +1268,36 @@ views::View* TranslateBubbleView::CreateViewError() {
// TODO(hajimehoshi): Revice this later to show a specific message for each // TODO(hajimehoshi): Revice this later to show a specific message for each
// error. (crbug/307350) // error. (crbug/307350)
views::View* TranslateBubbleView::CreateViewAdvanced() { std::unique_ptr<views::View> TranslateBubbleView::CreateViewAdvanced() {
views::Label* source_language_label = new views::Label(
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_PAGE_LANGUAGE));
views::Label* target_language_label = new views::Label(
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_TRANSLATION_LANGUAGE));
// Index + 1 because GetOriginalLanguageIndex() returns the actual index - 1 // Index + 1 because GetOriginalLanguageIndex() returns the actual index - 1
// to accommodate added label "Unknown". (crbug/721600) // to accommodate added label "Unknown". (crbug/721600)
int source_default_index = model_->GetOriginalLanguageIndex() + 1; int source_default_index = model_->GetOriginalLanguageIndex() + 1;
source_language_combobox_model_.reset( source_language_combobox_model_.reset(
new SourceLanguageComboboxModel(source_default_index, model_.get())); new SourceLanguageComboboxModel(source_default_index, model_.get()));
source_language_combobox_ = auto source_language_combobox =
new views::Combobox(source_language_combobox_model_.get()); std::make_unique<views::Combobox>(source_language_combobox_model_.get());
source_language_combobox_->SetID(COMBOBOX_ID_SOURCE_LANGUAGE); source_language_combobox->SetID(COMBOBOX_ID_SOURCE_LANGUAGE);
source_language_combobox_->set_listener(this); source_language_combobox->set_listener(this);
int target_default_index = model_->GetTargetLanguageIndex(); int target_default_index = model_->GetTargetLanguageIndex();
target_language_combobox_model_.reset( target_language_combobox_model_.reset(
new TargetLanguageComboboxModel(target_default_index, model_.get())); new TargetLanguageComboboxModel(target_default_index, model_.get()));
target_language_combobox_ = auto target_language_combobox =
new views::Combobox(target_language_combobox_model_.get()); std::make_unique<views::Combobox>(target_language_combobox_model_.get());
target_language_combobox_->SetID(COMBOBOX_ID_TARGET_LANGUAGE); target_language_combobox->SetID(COMBOBOX_ID_TARGET_LANGUAGE);
target_language_combobox_->set_listener(this); target_language_combobox->set_listener(this);
// In an incognito window, "Always translate" checkbox shouldn't be shown. // In an incognito window, "Always translate" checkbox shouldn't be shown.
std::unique_ptr<views::Checkbox> advanced_always_translate_checkbox;
if (!is_in_incognito_window_) { if (!is_in_incognito_window_) {
advanced_always_translate_checkbox_ = new views::Checkbox( advanced_always_translate_checkbox = std::make_unique<views::Checkbox>(
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS), this); l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS), this);
advanced_always_translate_checkbox_->SetID(BUTTON_ID_ALWAYS_TRANSLATE); advanced_always_translate_checkbox->SetID(BUTTON_ID_ALWAYS_TRANSLATE);
} }
views::View* view = new AdvancedViewContainer(); auto view = std::make_unique<AdvancedViewContainer>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -1384,22 +1343,27 @@ views::View* TranslateBubbleView::CreateViewAdvanced() { ...@@ -1384,22 +1343,27 @@ views::View* TranslateBubbleView::CreateViewAdvanced() {
0); 0);
layout->StartRow(views::GridLayout::kFixedSize, COLUMN_SET_ID_LANGUAGES); layout->StartRow(views::GridLayout::kFixedSize, COLUMN_SET_ID_LANGUAGES);
layout->AddView(source_language_label); layout->AddView(std::make_unique<views::Label>(
layout->AddView(source_language_combobox_); l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_PAGE_LANGUAGE)));
source_language_combobox_ =
layout->AddView(std::move(source_language_combobox));
const int vertical_spacing = const int vertical_spacing =
provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_VERTICAL); provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_VERTICAL);
layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing); layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing);
layout->StartRow(views::GridLayout::kFixedSize, COLUMN_SET_ID_LANGUAGES); layout->StartRow(views::GridLayout::kFixedSize, COLUMN_SET_ID_LANGUAGES);
layout->AddView(target_language_label); layout->AddView(std::make_unique<views::Label>(
layout->AddView(target_language_combobox_); l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_TRANSLATION_LANGUAGE)));
target_language_combobox_ =
layout->AddView(std::move(target_language_combobox));
if (!is_in_incognito_window_) { if (advanced_always_translate_checkbox) {
layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing); layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing);
layout->StartRow(views::GridLayout::kFixedSize, layout->StartRow(views::GridLayout::kFixedSize,
COLUMN_SET_ID_ALWAYS_CHECKBOX); COLUMN_SET_ID_ALWAYS_CHECKBOX);
layout->AddView(advanced_always_translate_checkbox_); advanced_always_translate_checkbox_ =
layout->AddView(std::move(advanced_always_translate_checkbox));
} }
layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing); layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing);
...@@ -1414,18 +1378,16 @@ views::View* TranslateBubbleView::CreateViewAdvanced() { ...@@ -1414,18 +1378,16 @@ views::View* TranslateBubbleView::CreateViewAdvanced() {
auto advanced_cancel_button = views::MdTextButton::CreateSecondaryUiButton( auto advanced_cancel_button = views::MdTextButton::CreateSecondaryUiButton(
this, l10n_util::GetStringUTF16(IDS_CANCEL)); this, l10n_util::GetStringUTF16(IDS_CANCEL));
advanced_cancel_button->SetID(BUTTON_ID_CANCEL); advanced_cancel_button->SetID(BUTTON_ID_CANCEL);
advanced_done_button_ = advanced_done_button.release(); advanced_done_button_ = layout->AddView(std::move(advanced_done_button));
advanced_cancel_button_ = advanced_cancel_button.release(); advanced_cancel_button_ = layout->AddView(std::move(advanced_cancel_button));
layout->AddView(advanced_done_button_);
layout->AddView(advanced_cancel_button_);
UpdateAdvancedView(); UpdateAdvancedView();
return view; return view;
} }
views::View* TranslateBubbleView::TabUiCreateViewAdvanedSource() { std::unique_ptr<views::View>
TranslateBubbleView::TabUiCreateViewAdvanedSource() {
// Bubble title // Bubble title
std::unique_ptr<views::Label> source_language_title_label = std::unique_ptr<views::Label> source_language_title_label =
std::make_unique<views::Label>( std::make_unique<views::Label>(
...@@ -1441,16 +1403,18 @@ views::View* TranslateBubbleView::TabUiCreateViewAdvanedSource() { ...@@ -1441,16 +1403,18 @@ views::View* TranslateBubbleView::TabUiCreateViewAdvanedSource() {
// Ideally all child view elements shall be created using unique_ptr. // Ideally all child view elements shall be created using unique_ptr.
// Using normal pointer for compatibility with existing code. // Using normal pointer for compatibility with existing code.
source_language_combobox_ = auto source_language_combobox =
new views::Combobox(source_language_combobox_model_.get()); std::make_unique<views::Combobox>(source_language_combobox_model_.get());
source_language_combobox_->SetID(COMBOBOX_ID_SOURCE_LANGUAGE); source_language_combobox->SetID(COMBOBOX_ID_SOURCE_LANGUAGE);
source_language_combobox_->set_listener(this); source_language_combobox->set_listener(this);
return CreateViewAdvancedTabUi(source_language_combobox_, source_language_combobox_ = source_language_combobox.get();
return CreateViewAdvancedTabUi(std::move(source_language_combobox),
std::move(source_language_title_label)); std::move(source_language_title_label));
} }
views::View* TranslateBubbleView::TabUiCreateViewAdvanedTarget() { std::unique_ptr<views::View>
TranslateBubbleView::TabUiCreateViewAdvanedTarget() {
// Bubble title // Bubble title
std::unique_ptr<views::Label> target_language_title_label = std::unique_ptr<views::Label> target_language_title_label =
std::make_unique<views::Label>( std::make_unique<views::Label>(
...@@ -1463,17 +1427,18 @@ views::View* TranslateBubbleView::TabUiCreateViewAdvanedTarget() { ...@@ -1463,17 +1427,18 @@ views::View* TranslateBubbleView::TabUiCreateViewAdvanedTarget() {
// Ideally all view components shall be created using unique_ptr. // Ideally all view components shall be created using unique_ptr.
// Using normal pointer for compatibility with existing code. // Using normal pointer for compatibility with existing code.
target_language_combobox_ = auto target_language_combobox =
new views::Combobox(target_language_combobox_model_.get()); std::make_unique<views::Combobox>(target_language_combobox_model_.get());
target_language_combobox_->SetID(COMBOBOX_ID_TARGET_LANGUAGE); target_language_combobox->SetID(COMBOBOX_ID_TARGET_LANGUAGE);
target_language_combobox_->set_listener(this); target_language_combobox->set_listener(this);
return CreateViewAdvancedTabUi(target_language_combobox_, target_language_combobox_ = target_language_combobox.get();
return CreateViewAdvancedTabUi(std::move(target_language_combobox),
std::move(target_language_title_label)); std::move(target_language_title_label));
} }
views::View* TranslateBubbleView::CreateViewAdvancedTabUi( std::unique_ptr<views::View> TranslateBubbleView::CreateViewAdvancedTabUi(
views::Combobox* combobox, std::unique_ptr<views::Combobox> combobox,
std::unique_ptr<views::Label> language_title_label) { std::unique_ptr<views::Label> language_title_label) {
const int language_icon_id = IDR_TRANSLATE_BUBBLE_ICON; const int language_icon_id = IDR_TRANSLATE_BUBBLE_ICON;
std::unique_ptr<views::ImageView> language_icon = std::unique_ptr<views::ImageView> language_icon =
...@@ -1501,7 +1466,7 @@ views::View* TranslateBubbleView::CreateViewAdvancedTabUi( ...@@ -1501,7 +1466,7 @@ views::View* TranslateBubbleView::CreateViewAdvancedTabUi(
close_button->SetFocusForPlatform(); close_button->SetFocusForPlatform();
close_button->SetID(BUTTON_ID_CLOSE); close_button->SetID(BUTTON_ID_CLOSE);
views::View* view = new AdvancedViewContainer(); auto view = std::make_unique<AdvancedViewContainer>();
views::GridLayout* layout = views::GridLayout* layout =
view->SetLayoutManager(std::make_unique<views::GridLayout>()); view->SetLayoutManager(std::make_unique<views::GridLayout>());
...@@ -1573,7 +1538,7 @@ views::View* TranslateBubbleView::CreateViewAdvancedTabUi( ...@@ -1573,7 +1538,7 @@ views::View* TranslateBubbleView::CreateViewAdvancedTabUi(
// TODO(crbug.com/963148): Combobox doesn't take up the whole row as shown // TODO(crbug.com/963148): Combobox doesn't take up the whole row as shown
// in mock. // in mock.
layout->AddView(combobox); layout->AddView(std::move(combobox));
layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing); layout->AddPaddingRow(views::GridLayout::kFixedSize, vertical_spacing);
...@@ -1645,3 +1610,19 @@ void TranslateBubbleView::UpdateAdvancedView() { ...@@ -1645,3 +1610,19 @@ void TranslateBubbleView::UpdateAdvancedView() {
? IDS_DONE ? IDS_DONE
: IDS_TRANSLATE_BUBBLE_ACCEPT)); : IDS_TRANSLATE_BUBBLE_ACCEPT));
} }
void TranslateBubbleView::UpdateLanguageNames(
base::string16* original_language_name,
base::string16* target_language_name) {
DCHECK(original_language_name && target_language_name);
previous_source_language_index_ = model_->GetOriginalLanguageIndex();
*original_language_name =
model_->GetLanguageNameAt(previous_source_language_index_);
previous_target_language_index_ = model_->GetTargetLanguageIndex();
*target_language_name =
model_->GetLanguageNameAt(previous_target_language_index_);
if (original_language_name->empty()) {
*original_language_name =
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_UNKNOWN_LANGUAGE);
}
}
...@@ -234,64 +234,58 @@ class TranslateBubbleView : public LocationBarBubbleDelegateView, ...@@ -234,64 +234,58 @@ class TranslateBubbleView : public LocationBarBubbleDelegateView,
// Updates the visibilities of child views according to the current view type. // Updates the visibilities of child views according to the current view type.
void UpdateChildVisibilities(); void UpdateChildVisibilities();
// Creates the 'before translate' view for the existing Button UI. Caller // Creates the 'before translate' view.
// takes ownership of the returned view. std::unique_ptr<views::View> CreateViewBeforeTranslate();
views::View* CreateViewBeforeTranslate();
// Creates the view for TAB UI. This view is being used before/during/after // Creates the view for TAB UI. This view is being used before/during/after
// translate. // translate.
views::View* CreateViewTab(); std::unique_ptr<views::View> CreateViewTab();
// AddTab function requires a view element to be shown below each tab. // AddTab function requires a view element to be shown below each tab.
// This function creates an empty view so no extra white space below the tab. // This function creates an empty view so no extra white space below the tab.
std::unique_ptr<views::View> CreateEmptyPane(); std::unique_ptr<views::View> CreateEmptyPane();
// Creates the 'translating' view for the existing Button UI. Caller takes // Creates the 'translating' view.
// ownership of the returned view. std::unique_ptr<views::View> CreateViewTranslating();
views::View* CreateViewTranslating();
// Creates the 'after translate' view for the existing Button UI. Caller takes // Creates the 'after translate' view.
// ownership of the returned view. std::unique_ptr<views::View> CreateViewAfterTranslate();
views::View* CreateViewAfterTranslate();
// Creates the 'error' view. Caller takes ownership of the returned view. // Creates the 'error' view. Caller takes ownership of the returned view.
// Three options depending on UI selection in kUseButtonTranslateBubbleUI. // Three options depending on UI selection in kUseButtonTranslateBubbleUI.
views::View* CreateViewError(); std::unique_ptr<views::View> CreateViewError();
// Creates the 'advanced' view. Caller takes ownership of the returned view. // Creates the 'advanced' view. Caller takes ownership of the returned view.
// Three options depending on UI selection in kUseButtonTranslateBubbleUI. // Three options depending on UI selection in kUseButtonTranslateBubbleUI.
views::View* CreateViewAdvanced(); std::unique_ptr<views::View> CreateViewAdvanced();
// Creates source language label and combobox for Tab UI advanced view. // Creates source language label and combobox for Tab Ui advanced view
views::View* TabUiCreateViewAdvanedSource(); std::unique_ptr<views::View> TabUiCreateViewAdvanedSource();
// Creates source language label and combobox for Tab UI advanced view. // Creates source language label and combobox for Tab Ui advanced view
views::View* TabUiCreateViewAdvanedTarget(); std::unique_ptr<views::View> TabUiCreateViewAdvanedTarget();
// Creates the skeleton view for GM2 UI. // Creates the skeleton view for GM2 UI.
views::View* GM2CreateView( std::unique_ptr<views::View> GM2CreateView(
std::unique_ptr<views::Button> action_button, std::unique_ptr<views::Button> action_button,
std::unique_ptr<views::View> status_indicator, std::unique_ptr<views::View> status_indicator,
bool active_option_button, bool active_option_button,
std::unique_ptr<views::Label> source_language_label, std::unique_ptr<views::Label> source_language_label,
std::unique_ptr<views::Label> target_language_label); std::unique_ptr<views::Label> target_language_label);
// Creates the 'before translate' view for Button_GM2 UI. Caller takes // Creates the 'before translate' view for Button_GM2 UI.
// ownership of the returned view. std::unique_ptr<views::View> GM2CreateViewBeforeTranslate();
views::View* GM2CreateViewBeforeTranslate();
// Creates the 'translating' view for Button_GM2 UI. Caller takes ownership // Creates the 'translating' view for Button_GM2 UI.
// of the returned view. std::unique_ptr<views::View> GM2CreateViewTranslating();
views::View* GM2CreateViewTranslating();
// Creates the 'after translate' view for Button_GM2 UI. Caller takes // Creates the 'after translate' view for Button_GM2 UI.
// ownership of the returned view. std::unique_ptr<views::View> GM2CreateViewAfterTranslate();
views::View* GM2CreateViewAfterTranslate();
// Creates the 'advanced' view to show source/target language combobox under // Creates the 'advanced' view to show source/target language combobox under
// TAB UI. Caller takes ownership of the returned view. // TAB UI. Caller takes ownership of the returned view.
views::View* CreateViewAdvancedTabUi( std::unique_ptr<views::View> CreateViewAdvancedTabUi(
views::Combobox* combobox, std::unique_ptr<views::Combobox> combobox,
std::unique_ptr<views::Label> language_title_label); std::unique_ptr<views::Label> language_title_label);
// Get the current always translate checkbox // Get the current always translate checkbox
...@@ -317,41 +311,46 @@ class TranslateBubbleView : public LocationBarBubbleDelegateView, ...@@ -317,41 +311,46 @@ class TranslateBubbleView : public LocationBarBubbleDelegateView,
// Handles the reset button in advanced view under Tab UI. // Handles the reset button in advanced view under Tab UI.
void ResetLanguage(); void ResetLanguage();
// Retrieve the names of the from/to languages and reset the language
// indices.
void UpdateLanguageNames(base::string16* original_language_name,
base::string16* target_language_name);
static TranslateBubbleView* translate_bubble_view_; static TranslateBubbleView* translate_bubble_view_;
views::View* before_translate_view_; views::View* before_translate_view_ = nullptr;
views::View* translating_view_; views::View* translating_view_ = nullptr;
views::View* after_translate_view_; views::View* after_translate_view_ = nullptr;
views::View* error_view_; views::View* error_view_ = nullptr;
views::View* advanced_view_; views::View* advanced_view_ = nullptr;
views::View* tab_translate_view_; views::View* tab_translate_view_ = nullptr;
views::View* advanced_view_source_; views::View* advanced_view_source_ = nullptr;
views::View* advanced_view_target_; views::View* advanced_view_target_ = nullptr;
std::unique_ptr<SourceLanguageComboboxModel> source_language_combobox_model_; std::unique_ptr<SourceLanguageComboboxModel> source_language_combobox_model_;
std::unique_ptr<TargetLanguageComboboxModel> target_language_combobox_model_; std::unique_ptr<TargetLanguageComboboxModel> target_language_combobox_model_;
views::Combobox* source_language_combobox_; views::Combobox* source_language_combobox_ = nullptr;
views::Combobox* target_language_combobox_; views::Combobox* target_language_combobox_ = nullptr;
views::Checkbox* before_always_translate_checkbox_; views::Checkbox* before_always_translate_checkbox_ = nullptr;
views::Checkbox* advanced_always_translate_checkbox_; views::Checkbox* advanced_always_translate_checkbox_ = nullptr;
views::TabbedPane* tabbed_pane_; views::TabbedPane* tabbed_pane_ = nullptr;
// Button_GM2 UI source/target language label class variable to be updated // Button_GM2 UI source/target language label class variable to be updated
// based on user selction in // based on user selction in
views::Label* gm2_source_language_label_; views::Label* gm2_source_language_label_ = nullptr;
views::Label* gm2_target_language_label_; views::Label* gm2_target_language_label_ = nullptr;
views::LabelButton* advanced_cancel_button_; views::LabelButton* advanced_cancel_button_ = nullptr;
views::LabelButton* advanced_done_button_; views::LabelButton* advanced_done_button_ = nullptr;
// Default source/target language without user interaction. // Default source/target language without user interaction.
int previous_source_language_index_; int previous_source_language_index_;
int previous_target_language_index_; int previous_target_language_index_;
// Used to trigger the options menu in tests. // Used to trigger the options menu in tests.
views::Button* before_translate_options_button_; views::Button* before_translate_options_button_ = nullptr;
std::unique_ptr<ui::SimpleMenuModel> options_menu_model_; std::unique_ptr<ui::SimpleMenuModel> options_menu_model_;
std::unique_ptr<views::MenuRunner> options_menu_runner_; std::unique_ptr<views::MenuRunner> options_menu_runner_;
...@@ -367,7 +366,7 @@ class TranslateBubbleView : public LocationBarBubbleDelegateView, ...@@ -367,7 +366,7 @@ class TranslateBubbleView : public LocationBarBubbleDelegateView,
const language::TranslateUIBubbleModel bubble_ui_model_; const language::TranslateUIBubbleModel bubble_ui_model_;
bool should_always_translate_; bool should_always_translate_ = false;
std::unique_ptr<WebContentMouseHandler> mouse_handler_; std::unique_ptr<WebContentMouseHandler> mouse_handler_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment