Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3783)

Unified Diff: chrome/browser/ui/views/payments/editor_view_controller.cc

Issue 2768133002: [Web Payments] Refactor sheet display to allow updating view content (Closed)
Patch Set: Add comments. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/payments/editor_view_controller.cc
diff --git a/chrome/browser/ui/views/payments/editor_view_controller.cc b/chrome/browser/ui/views/payments/editor_view_controller.cc
index dcc2b6b76e4d233d73a4cf5762731873be2034fa..cd427557adeda92c6ea35d85684128ce223229d9 100644
--- a/chrome/browser/ui/views/payments/editor_view_controller.cc
+++ b/chrome/browser/ui/views/payments/editor_view_controller.cc
@@ -53,30 +53,6 @@ EditorViewController::EditorViewController(PaymentRequestSpec* spec,
EditorViewController::~EditorViewController() {}
-std::unique_ptr<views::View> EditorViewController::CreateView() {
- std::unique_ptr<views::View> content_view = base::MakeUnique<views::View>();
-
- views::BoxLayout* layout =
- new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0);
- layout->set_main_axis_alignment(views::BoxLayout::MAIN_AXIS_ALIGNMENT_START);
- layout->set_cross_axis_alignment(
- views::BoxLayout::CROSS_AXIS_ALIGNMENT_STRETCH);
- content_view->SetLayoutManager(layout);
- // No insets. Child views below are responsible for their padding.
-
- // An editor can optionally have a header view specific to it.
- content_view->AddChildView(CreateHeaderView().release());
-
- // The heart of the editor dialog: all the input fields with their labels.
- CreateEditorView();
- content_view->AddChildView(editor_view_.get());
-
- return CreatePaymentView(
- CreateSheetHeaderView(
- true, l10n_util::GetStringUTF16(GetViewHeaderTitleId()), this),
- std::move(content_view));
-}
-
void EditorViewController::DisplayErrorMessageForField(
const EditorField& field,
const base::string16& error_message) {
@@ -96,6 +72,22 @@ std::unique_ptr<views::Button> EditorViewController::CreatePrimaryButton() {
return button;
}
+void EditorViewController::FillContentView(views::View* content_view) {
+ views::BoxLayout* layout =
+ new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0);
+ layout->set_main_axis_alignment(views::BoxLayout::MAIN_AXIS_ALIGNMENT_START);
+ layout->set_cross_axis_alignment(
+ views::BoxLayout::CROSS_AXIS_ALIGNMENT_STRETCH);
+ content_view->SetLayoutManager(layout);
+ // No insets. Child views below are responsible for their padding.
+
+ // An editor can optionally have a header view specific to it.
+ content_view->AddChildView(CreateHeaderView().release());
+
+ // The heart of the editor dialog: all the input fields with their labels.
+ content_view->AddChildView(CreateEditorView().release());
+}
+
// Adds the "required fields" label in disabled text, to obtain this result.
// +---------------------------------------------------------+
// | "* indicates required fields" | CANCEL | DONE |
@@ -121,7 +113,7 @@ std::unique_ptr<views::View> EditorViewController::CreateExtraFooterView() {
}
void EditorViewController::UpdateEditorView() {
- UpdateEditorViewImpl();
+ UpdateContentView();
// TODO(crbug.com/704254): Find how to update the parent view bounds so that
// the vertical scrollbar size gets updated.
dialog()->EditorViewUpdated();
@@ -149,11 +141,43 @@ void EditorViewController::OnPerformAction(views::Combobox* sender) {
static_cast<ValidatingCombobox*>(sender)->OnContentsChanged();
}
-void EditorViewController::CreateEditorView() {
- editor_view_ = base::MakeUnique<views::View>();
- editor_view_->set_owned_by_client();
+std::unique_ptr<views::View> EditorViewController::CreateEditorView() {
+ std::unique_ptr<views::View> editor_view = base::MakeUnique<views::View>();
+ text_fields_.clear();
+ comboboxes_.clear();
+
+ std::unique_ptr<views::GridLayout> editor_layout =
+ base::MakeUnique<views::GridLayout>(editor_view.get());
+
+ // The editor grid layout is padded vertically from the top and bottom, and
+ // horizontally inset like other content views. The top padding needs to be
+ // added to the top padding of the first row.
+ constexpr int kEditorVerticalInset = 16;
+ editor_layout->SetInsets(
+ kEditorVerticalInset, payments::kPaymentRequestRowHorizontalInsets,
+ kEditorVerticalInset, payments::kPaymentRequestRowHorizontalInsets);
+
+ views::ColumnSet* columns = editor_layout->AddColumnSet(0);
+ columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ // This is the horizontal padding between the label and the input field.
+ constexpr int kLabelInputFieldHorizontalPadding = 16;
+ columns->AddPaddingColumn(0, kLabelInputFieldHorizontalPadding);
+
+ columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ // The LayoutManager needs to be set before input fields are created, so we
+ // keep a handle to it before we release it to the view.
+ views::GridLayout* layout_handle = editor_layout.get();
+ editor_view->SetLayoutManager(editor_layout.release());
+ std::vector<EditorField> fields = GetFieldDefinitions();
+ for (const auto& field : fields) {
+ CreateInputField(layout_handle, field);
+ }
- UpdateEditorViewImpl();
+ return editor_view;
}
// Each input field is a 4-quadrant grid.
@@ -222,42 +246,4 @@ void EditorViewController::CreateInputField(views::GridLayout* layout,
layout->AddView(error_label.release());
}
-void EditorViewController::UpdateEditorViewImpl() {
- DCHECK_NE(nullptr, editor_view_.get());
- text_fields_.clear();
- comboboxes_.clear();
- editor_view_->RemoveAllChildViews(true);
-
- std::unique_ptr<views::GridLayout> editor_layout =
- base::MakeUnique<views::GridLayout>(editor_view_.get());
-
- // The editor grid layout is padded vertically from the top and bottom, and
- // horizontally inset like other content views. The top padding needs to be
- // added to the top padding of the first row.
- constexpr int kEditorVerticalInset = 16;
- editor_layout->SetInsets(
- kEditorVerticalInset, payments::kPaymentRequestRowHorizontalInsets,
- kEditorVerticalInset, payments::kPaymentRequestRowHorizontalInsets);
-
- views::ColumnSet* columns = editor_layout->AddColumnSet(0);
- columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
- views::GridLayout::USE_PREF, 0, 0);
-
- // This is the horizontal padding between the label and the input field.
- constexpr int kLabelInputFieldHorizontalPadding = 16;
- columns->AddPaddingColumn(0, kLabelInputFieldHorizontalPadding);
-
- columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
- views::GridLayout::USE_PREF, 0, 0);
-
- // The LayoutManager needs to be set before input fields are created, so we
- // keep a handle to it before we release it to the view.
- views::GridLayout* layout_handle = editor_layout.get();
- editor_view_->SetLayoutManager(editor_layout.release());
- std::vector<EditorField> fields = GetFieldDefinitions();
- for (const auto& field : fields) {
- CreateInputField(layout_handle, field);
- }
- editor_view_->Layout();
-}
} // namespace payments

Powered by Google App Engine
This is Rietveld 408576698