Index: chrome/browser/ui/views/payments/payment_request_item_list.cc |
diff --git a/chrome/browser/ui/views/payments/payment_request_item_list.cc b/chrome/browser/ui/views/payments/payment_request_item_list.cc |
index 0cb3ce8787a4746bb3c136eb20ca2ff38dfc3fe3..29dcc9e3f74187210053b30e4f4fa0ab335d539b 100644 |
--- a/chrome/browser/ui/views/payments/payment_request_item_list.cc |
+++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc |
@@ -10,7 +10,8 @@ |
namespace payments { |
-PaymentRequestItemList::Item::Item() {} |
+PaymentRequestItemList::Item::Item(PaymentRequestItemList* list, bool selected) |
+ : list_(list), selected_(selected) {} |
PaymentRequestItemList::Item::~Item() {} |
@@ -23,12 +24,18 @@ views::View* PaymentRequestItemList::Item::GetItemView() { |
return item_view_.get(); |
} |
+void PaymentRequestItemList::Item::set_selected(bool selected) { |
+ selected_ = selected; |
+ SelectedStateChanged(); |
+} |
+ |
PaymentRequestItemList::PaymentRequestItemList() {} |
PaymentRequestItemList::~PaymentRequestItemList() {} |
void PaymentRequestItemList::AddItem( |
std::unique_ptr<PaymentRequestItemList::Item> item) { |
+ DCHECK_EQ(this, item->list()); |
items_.push_back(std::move(item)); |
} |
@@ -46,4 +53,17 @@ std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { |
return content_view; |
} |
+void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item) { |
Mathieu
2017/02/23 21:22:53
As a newcomer to this code, I keep having double t
anthonyvd
2017/02/23 21:49:20
Fair point. There's a bigger, overarching discussi
|
+ DCHECK_EQ(this, item->list()); |
+ // First, deselect the previously selected item |
Mathieu
2017/02/23 21:22:53
should we early abort if item->selected()
anthonyvd
2017/02/23 21:49:20
Done. Also realized naming both the parameter and
|
+ for (auto& item : items_) { |
+ if (item->selected()) { |
+ item->set_selected(false); |
+ break; // Only one item is ever selected |
+ } |
+ } |
+ |
+ item->set_selected(true); |
+} |
+ |
} // namespace payments |