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

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

Issue 2711973002: [Web Payments] Implement the credit card selection UI functionality. (Closed)
Patch Set: Address comments and add set_selected_credit_card in PaymentRequest Created 3 years, 10 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
« no previous file with comments | « chrome/browser/ui/views/payments/payment_request_item_list.h ('k') | components/payments/payment_request.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..8b3721cef7fdabb17ac57d1e4a92dc5300f25f16 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,10 @@
namespace payments {
-PaymentRequestItemList::Item::Item() {}
+PaymentRequestItemList::Item::Item(PaymentRequest* request,
+ PaymentRequestItemList* list,
+ bool selected)
+ : request_(request), list_(list), selected_(selected) {}
PaymentRequestItemList::Item::~Item() {}
@@ -23,13 +26,21 @@ views::View* PaymentRequestItemList::Item::GetItemView() {
return item_view_.get();
}
-PaymentRequestItemList::PaymentRequestItemList() {}
+void PaymentRequestItemList::Item::SetSelected(bool selected) {
+ selected_ = selected;
+ SelectedStateChanged();
+}
+
+PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {}
PaymentRequestItemList::~PaymentRequestItemList() {}
void PaymentRequestItemList::AddItem(
std::unique_ptr<PaymentRequestItemList::Item> item) {
+ DCHECK_EQ(this, item->list());
items_.push_back(std::move(item));
+ if (items_.back()->selected())
+ SelectItem(items_.back().get());
}
std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() {
@@ -46,4 +57,23 @@ std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() {
return content_view;
}
+void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item) {
+ DCHECK_EQ(this, item->list());
+ if (selected_item_ == item)
+ return;
+
+ UnselectSelectedItem();
+
+ selected_item_ = item;
+ item->SetSelected(true);
+}
+
+void PaymentRequestItemList::UnselectSelectedItem() {
+ // It's possible that no item is currently selected, either during list
+ // creation or in the middle of the selection operation when the previously
+ // selected item has been deselected but the new one isn't selected yet.
+ if (selected_item_)
+ selected_item_->SetSelected(false);
+}
please use gerrit instead 2017/02/24 16:40:59 selected_item_ = nullptr?
anthonyvd 2017/02/24 21:49:42 Done.
+
} // namespace payments
« no previous file with comments | « chrome/browser/ui/views/payments/payment_request_item_list.h ('k') | components/payments/payment_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698