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

Side by Side Diff: components/payments/content/payment_request_spec.cc

Issue 2779453002: [Payments] Return the preferred payment method name to the merchant (Closed)
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/payments/content/payment_request_spec.h" 5 #include "components/payments/content/payment_request_spec.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 10
(...skipping 21 matching lines...) Expand all
32 32
33 void PaymentRequestSpec::AddObserver(Observer* observer) { 33 void PaymentRequestSpec::AddObserver(Observer* observer) {
34 CHECK(observer); 34 CHECK(observer);
35 observers_.AddObserver(observer); 35 observers_.AddObserver(observer);
36 } 36 }
37 37
38 void PaymentRequestSpec::RemoveObserver(Observer* observer) { 38 void PaymentRequestSpec::RemoveObserver(Observer* observer) {
39 observers_.RemoveObserver(observer); 39 observers_.RemoveObserver(observer);
40 } 40 }
41 41
42 bool PaymentRequestSpec::IsMethodSupportedThroughBasicCard(
43 const std::string& method_name) {
44 return basic_card_specified_networks_.count(method_name);
45 }
46
42 base::string16 PaymentRequestSpec::GetFormattedCurrencyAmount( 47 base::string16 PaymentRequestSpec::GetFormattedCurrencyAmount(
43 const std::string& amount) { 48 const std::string& amount) {
44 CurrencyFormatter* formatter = GetOrCreateCurrencyFormatter( 49 CurrencyFormatter* formatter = GetOrCreateCurrencyFormatter(
45 details_->total->amount->currency, 50 details_->total->amount->currency,
46 details_->total->amount->currency_system, app_locale_); 51 details_->total->amount->currency_system, app_locale_);
47 return formatter->Format(amount); 52 return formatter->Format(amount);
48 } 53 }
49 54
50 std::string PaymentRequestSpec::GetFormattedCurrencyCode() { 55 std::string PaymentRequestSpec::GetFormattedCurrencyCode() {
51 CurrencyFormatter* formatter = GetOrCreateCurrencyFormatter( 56 CurrencyFormatter* formatter = GetOrCreateCurrencyFormatter(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 // to |supported_card_networks_| if "basic-card" is specified with no 92 // to |supported_card_networks_| if "basic-card" is specified with no
88 // supported networks. 93 // supported networks.
89 card_networks.erase(card_it); 94 card_networks.erase(card_it);
90 } else if (method == kBasicCardMethodName) { 95 } else if (method == kBasicCardMethodName) {
91 // For the "basic-card" method, check "supportedNetworks". 96 // For the "basic-card" method, check "supportedNetworks".
92 if (method_data_entry->supported_networks.empty()) { 97 if (method_data_entry->supported_networks.empty()) {
93 // Empty |supported_networks| means all networks are supported. 98 // Empty |supported_networks| means all networks are supported.
94 supported_card_networks_.insert(supported_card_networks_.end(), 99 supported_card_networks_.insert(supported_card_networks_.end(),
95 card_networks.begin(), 100 card_networks.begin(),
96 card_networks.end()); 101 card_networks.end());
102 basic_card_specified_networks_.insert(card_networks.begin(),
103 card_networks.end());
97 // Clear the set so that no further networks are added to 104 // Clear the set so that no further networks are added to
98 // |supported_card_networks_|. 105 // |supported_card_networks_|.
99 card_networks.clear(); 106 card_networks.clear();
100 } else { 107 } else {
101 // The merchant has specified a few basic card supported networks. Use 108 // The merchant has specified a few basic card supported networks. Use
102 // the mapping to transform to known basic-card types. 109 // the mapping to transform to known basic-card types.
103 using mojom::BasicCardNetwork; 110 using mojom::BasicCardNetwork;
104 std::unordered_map<BasicCardNetwork, std::string> networks = { 111 std::unordered_map<BasicCardNetwork, std::string> networks = {
105 {BasicCardNetwork::AMEX, "amex"}, 112 {BasicCardNetwork::AMEX, "amex"},
106 {BasicCardNetwork::DINERS, "diners"}, 113 {BasicCardNetwork::DINERS, "diners"},
107 {BasicCardNetwork::DISCOVER, "discover"}, 114 {BasicCardNetwork::DISCOVER, "discover"},
108 {BasicCardNetwork::JCB, "jcb"}, 115 {BasicCardNetwork::JCB, "jcb"},
109 {BasicCardNetwork::MASTERCARD, "mastercard"}, 116 {BasicCardNetwork::MASTERCARD, "mastercard"},
110 {BasicCardNetwork::MIR, "mir"}, 117 {BasicCardNetwork::MIR, "mir"},
111 {BasicCardNetwork::UNIONPAY, "unionpay"}, 118 {BasicCardNetwork::UNIONPAY, "unionpay"},
112 {BasicCardNetwork::VISA, "visa"}}; 119 {BasicCardNetwork::VISA, "visa"}};
113 for (const BasicCardNetwork& supported_network : 120 for (const BasicCardNetwork& supported_network :
114 method_data_entry->supported_networks) { 121 method_data_entry->supported_networks) {
115 // Make sure that the network was not already added to 122 // Make sure that the network was not already added to
116 // |supported_card_networks_|. 123 // |supported_card_networks_|.
117 auto card_it = card_networks.find(networks[supported_network]); 124 auto card_it = card_networks.find(networks[supported_network]);
118 if (card_it != card_networks.end()) { 125 if (card_it != card_networks.end()) {
119 supported_card_networks_.push_back(networks[supported_network]); 126 supported_card_networks_.push_back(networks[supported_network]);
127 basic_card_specified_networks_.insert(
128 networks[supported_network]);
120 card_networks.erase(card_it); 129 card_networks.erase(card_it);
121 } 130 }
122 } 131 }
123 } 132 }
124 } 133 }
125 } 134 }
126 } 135 }
127 136
128 supported_card_networks_set_.insert(supported_card_networks_.begin(), 137 supported_card_networks_set_.insert(supported_card_networks_.begin(),
129 supported_card_networks_.end()); 138 supported_card_networks_.end());
130 } 139 }
131 140
132 void PaymentRequestSpec::NotifyOnInvalidSpecProvided() { 141 void PaymentRequestSpec::NotifyOnInvalidSpecProvided() {
133 for (auto& observer : observers_) 142 for (auto& observer : observers_)
134 observer.OnInvalidSpecProvided(); 143 observer.OnInvalidSpecProvided();
135 } 144 }
136 145
137 CurrencyFormatter* PaymentRequestSpec::GetOrCreateCurrencyFormatter( 146 CurrencyFormatter* PaymentRequestSpec::GetOrCreateCurrencyFormatter(
138 const std::string& currency_code, 147 const std::string& currency_code,
139 const std::string& currency_system, 148 const std::string& currency_system,
140 const std::string& locale_name) { 149 const std::string& locale_name) {
141 if (!currency_formatter_) { 150 if (!currency_formatter_) {
142 currency_formatter_.reset( 151 currency_formatter_.reset(
143 new CurrencyFormatter(currency_code, currency_system, locale_name)); 152 new CurrencyFormatter(currency_code, currency_system, locale_name));
144 } 153 }
145 return currency_formatter_.get(); 154 return currency_formatter_.get();
146 } 155 }
147 156
148 } // namespace payments 157 } // namespace payments
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698