OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/payments/payment_request_sheet_controller.h" | 5 #include "chrome/browser/ui/views/payments/payment_request_sheet_controller.h" |
6 | 6 |
7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" | 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" |
8 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" | 8 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" |
9 #include "components/payments/content/payment_request.h" | 9 #include "components/payments/content/payment_request.h" |
10 #include "components/strings/grit/components_strings.h" | 10 #include "components/strings/grit/components_strings.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 | 100 |
101 PaymentRequestSheetController::PaymentRequestSheetController( | 101 PaymentRequestSheetController::PaymentRequestSheetController( |
102 PaymentRequestSpec* spec, | 102 PaymentRequestSpec* spec, |
103 PaymentRequestState* state, | 103 PaymentRequestState* state, |
104 PaymentRequestDialogView* dialog) | 104 PaymentRequestDialogView* dialog) |
105 : spec_(spec), state_(state), dialog_(dialog) {} | 105 : spec_(spec), state_(state), dialog_(dialog) {} |
106 | 106 |
107 PaymentRequestSheetController::~PaymentRequestSheetController() {} | 107 PaymentRequestSheetController::~PaymentRequestSheetController() {} |
108 | 108 |
109 std::unique_ptr<views::View> PaymentRequestSheetController::CreateView() { | 109 std::unique_ptr<views::View> PaymentRequestSheetController::CreateView() { |
110 std::unique_ptr<views::View> view = CreatePaymentView(); | |
111 UpdateContentView(); | |
112 return view; | |
113 } | |
114 | |
115 void PaymentRequestSheetController::UpdateContentView() { | |
116 content_view_->RemoveAllChildViews(true); | |
117 FillContentView(content_view_); | |
118 content_view_->Layout(); | |
119 pane_->SizeToPreferredSize(); | |
120 // Now that the content and its surrounding pane are updated, force a Layout | |
121 // on the ScrollView so that it updates its scroll bars now. | |
122 scroll_->Layout(); | |
123 } | |
124 | |
125 std::unique_ptr<views::Button> | |
126 PaymentRequestSheetController::CreatePrimaryButton() { | |
127 return nullptr; | |
128 } | |
129 | |
130 base::string16 PaymentRequestSheetController::GetSecondaryButtonLabel() { | |
131 return l10n_util::GetStringUTF16(IDS_CANCEL); | |
132 } | |
133 | |
134 bool PaymentRequestSheetController::ShouldShowHeaderBackArrow() { | |
135 return true; | |
136 } | |
137 | |
138 std::unique_ptr<views::View> | |
139 PaymentRequestSheetController::CreateExtraFooterView() { | |
140 return nullptr; | |
141 } | |
142 | |
143 void PaymentRequestSheetController::ButtonPressed( | |
144 views::Button* sender, const ui::Event& event) { | |
145 switch (static_cast<PaymentRequestCommonTags>(sender->tag())) { | |
146 case PaymentRequestCommonTags::CLOSE_BUTTON_TAG: | |
147 dialog()->CloseDialog(); | |
148 break; | |
149 case PaymentRequestCommonTags::BACK_BUTTON_TAG: | |
150 dialog()->GoBack(); | |
151 break; | |
152 case PaymentRequestCommonTags::PAY_BUTTON_TAG: | |
153 dialog()->Pay(); | |
154 break; | |
155 case PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX: | |
156 NOTREACHED(); | |
157 break; | |
158 } | |
159 } | |
160 | |
161 std::unique_ptr<views::View> | |
162 PaymentRequestSheetController::CreatePaymentView() { | |
163 // Create the footer now so that it's known if there's a primary button or not | 110 // Create the footer now so that it's known if there's a primary button or not |
164 // before creating the sheet view. This way, it's possible to determine | 111 // before creating the sheet view. This way, it's possible to determine |
165 // whether there's something to do when the user hits enter. | 112 // whether there's something to do when the user hits enter. |
166 std::unique_ptr<views::View> footer = CreateFooterView(); | 113 std::unique_ptr<views::View> footer = CreateFooterView(); |
167 std::unique_ptr<SheetView> view = base::MakeUnique<SheetView>( | 114 std::unique_ptr<SheetView> view = base::MakeUnique<SheetView>( |
168 primary_button_ | 115 primary_button_ |
169 ? base::Bind( | 116 ? base::Bind( |
170 &PaymentRequestSheetController::PerformPrimaryButtonAction, | 117 &PaymentRequestSheetController::PerformPrimaryButtonAction, |
171 base::Unretained(this)) | 118 base::Unretained(this)) |
172 : base::Callback<bool()>()); | 119 : base::Callback<bool()>()); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 scroll_ = base::MakeUnique<views::ScrollView>(); | 163 scroll_ = base::MakeUnique<views::ScrollView>(); |
217 scroll_->set_owned_by_client(); | 164 scroll_->set_owned_by_client(); |
218 scroll_->EnableViewPortLayer(); | 165 scroll_->EnableViewPortLayer(); |
219 scroll_->set_hide_horizontal_scrollbar(true); | 166 scroll_->set_hide_horizontal_scrollbar(true); |
220 scroll_->SetContents(pane_); | 167 scroll_->SetContents(pane_); |
221 layout->AddView(scroll_.get()); | 168 layout->AddView(scroll_.get()); |
222 | 169 |
223 layout->StartRow(0, 0); | 170 layout->StartRow(0, 0); |
224 layout->AddView(footer.release()); | 171 layout->AddView(footer.release()); |
225 | 172 |
| 173 UpdateContentView(); |
| 174 |
226 view->SetFirstFocusableView(GetFirstFocusedView()); | 175 view->SetFirstFocusableView(GetFirstFocusedView()); |
| 176 return std::move(view); |
| 177 } |
227 | 178 |
228 return std::move(view); | 179 void PaymentRequestSheetController::UpdateContentView() { |
| 180 content_view_->RemoveAllChildViews(true); |
| 181 FillContentView(content_view_); |
| 182 content_view_->Layout(); |
| 183 pane_->SizeToPreferredSize(); |
| 184 // Now that the content and its surrounding pane are updated, force a Layout |
| 185 // on the ScrollView so that it updates its scroll bars now. |
| 186 scroll_->Layout(); |
| 187 } |
| 188 |
| 189 std::unique_ptr<views::Button> |
| 190 PaymentRequestSheetController::CreatePrimaryButton() { |
| 191 return nullptr; |
| 192 } |
| 193 |
| 194 base::string16 PaymentRequestSheetController::GetSecondaryButtonLabel() { |
| 195 return l10n_util::GetStringUTF16(IDS_CANCEL); |
| 196 } |
| 197 |
| 198 bool PaymentRequestSheetController::ShouldShowHeaderBackArrow() { |
| 199 return true; |
| 200 } |
| 201 |
| 202 std::unique_ptr<views::View> |
| 203 PaymentRequestSheetController::CreateExtraFooterView() { |
| 204 return nullptr; |
| 205 } |
| 206 |
| 207 void PaymentRequestSheetController::ButtonPressed(views::Button* sender, |
| 208 const ui::Event& event) { |
| 209 switch (static_cast<PaymentRequestCommonTags>(sender->tag())) { |
| 210 case PaymentRequestCommonTags::CLOSE_BUTTON_TAG: |
| 211 dialog()->CloseDialog(); |
| 212 break; |
| 213 case PaymentRequestCommonTags::BACK_BUTTON_TAG: |
| 214 dialog()->GoBack(); |
| 215 break; |
| 216 case PaymentRequestCommonTags::PAY_BUTTON_TAG: |
| 217 dialog()->Pay(); |
| 218 break; |
| 219 case PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX: |
| 220 NOTREACHED(); |
| 221 break; |
| 222 } |
229 } | 223 } |
230 | 224 |
231 std::unique_ptr<views::View> PaymentRequestSheetController::CreateFooterView() { | 225 std::unique_ptr<views::View> PaymentRequestSheetController::CreateFooterView() { |
232 std::unique_ptr<views::View> container = base::MakeUnique<views::View>(); | 226 std::unique_ptr<views::View> container = base::MakeUnique<views::View>(); |
233 | 227 |
234 views::GridLayout* layout = new views::GridLayout(container.get()); | 228 views::GridLayout* layout = new views::GridLayout(container.get()); |
235 container->SetLayoutManager(layout); | 229 container->SetLayoutManager(layout); |
236 | 230 |
237 views::ColumnSet* columns = layout->AddColumnSet(0); | 231 views::ColumnSet* columns = layout->AddColumnSet(0); |
238 columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, | 232 columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 | 291 |
298 bool PaymentRequestSheetController::PerformPrimaryButtonAction() { | 292 bool PaymentRequestSheetController::PerformPrimaryButtonAction() { |
299 if (primary_button_ && primary_button_->enabled()) { | 293 if (primary_button_ && primary_button_->enabled()) { |
300 ButtonPressed(primary_button_.get(), DummyEvent()); | 294 ButtonPressed(primary_button_.get(), DummyEvent()); |
301 return true; | 295 return true; |
302 } | 296 } |
303 return false; | 297 return false; |
304 } | 298 } |
305 | 299 |
306 } // namespace payments | 300 } // namespace payments |
OLD | NEW |