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

Side by Side Diff: components/payments/core/subkey_requester.cc

Issue 2966103002: [Payments] Show admin area complete names on PR form. (Closed)
Patch Set: Small Changes. Created 3 years, 5 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 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 "components/payments/core/subkey_requester.h" 5 #include "components/payments/core/subkey_requester.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 11 matching lines...) Expand all
22 22
23 namespace { 23 namespace {
24 24
25 using ::i18n::addressinput::Source; 25 using ::i18n::addressinput::Source;
26 using ::i18n::addressinput::Storage; 26 using ::i18n::addressinput::Storage;
27 27
28 class SubKeyRequest : public SubKeyRequester::Request { 28 class SubKeyRequest : public SubKeyRequester::Request {
29 public: 29 public:
30 // The |delegate| and |address_validator| need to outlive this Request. 30 // The |delegate| and |address_validator| need to outlive this Request.
31 SubKeyRequest(const std::string& region_code, 31 SubKeyRequest(const std::string& region_code,
32 const std::string& language,
32 int timeout_seconds, 33 int timeout_seconds,
33 autofill::AddressValidator* address_validator, 34 autofill::AddressValidator* address_validator,
34 SubKeyReceiverCallback on_subkeys_received) 35 SubKeyReceiverCallback on_subkeys_received)
35 : region_code_(region_code), 36 : region_code_(region_code),
37 language_(language),
36 address_validator_(address_validator), 38 address_validator_(address_validator),
37 on_subkeys_received_(std::move(on_subkeys_received)), 39 on_subkeys_received_(std::move(on_subkeys_received)),
38 has_responded_(false), 40 has_responded_(false),
39 on_timeout_(base::Bind(&::payments::SubKeyRequest::OnRulesLoaded, 41 on_timeout_(base::Bind(&::payments::SubKeyRequest::OnRulesLoaded,
40 base::Unretained(this))) { 42 base::Unretained(this))) {
41 base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( 43 base::SequencedTaskRunnerHandle::Get()->PostDelayedTask(
42 FROM_HERE, on_timeout_.callback(), 44 FROM_HERE, on_timeout_.callback(),
43 base::TimeDelta::FromSeconds(timeout_seconds)); 45 base::TimeDelta::FromSeconds(timeout_seconds));
44 } 46 }
45 47
46 ~SubKeyRequest() override {} 48 ~SubKeyRequest() override {}
47 49
48 void OnRulesLoaded() override { 50 void OnRulesLoaded() override {
49 on_timeout_.Cancel(); 51 on_timeout_.Cancel();
50 // Check if the timeout happened before the rules were loaded. 52 // Check if the timeout happened before the rules were loaded.
51 if (has_responded_) 53 if (has_responded_)
52 return; 54 return;
53 has_responded_ = true; 55 has_responded_ = true;
54 56
55 std::move(on_subkeys_received_) 57 auto subkeys =
56 .Run(address_validator_->GetRegionSubKeys(region_code_)); 58 address_validator_->GetRegionSubKeys(region_code_, language_);
59 std::vector<std::string> subkeys_codes;
60 std::vector<std::string> subkeys_names;
61 for (auto s : subkeys) {
62 subkeys_codes.push_back(s.first);
63 subkeys_names.push_back(s.second);
64 }
65 std::move(on_subkeys_received_).Run(subkeys_codes, subkeys_names);
57 } 66 }
58 67
59 private: 68 private:
60 std::string region_code_; 69 std::string region_code_;
70 std::string language_;
61 // Not owned. Never null. Outlive this object. 71 // Not owned. Never null. Outlive this object.
62 autofill::AddressValidator* address_validator_; 72 autofill::AddressValidator* address_validator_;
63 73
64 SubKeyReceiverCallback on_subkeys_received_; 74 SubKeyReceiverCallback on_subkeys_received_;
65 75
66 bool has_responded_; 76 bool has_responded_;
67 base::CancelableCallback<void()> on_timeout_; 77 base::CancelableCallback<void()> on_timeout_;
68 78
69 DISALLOW_COPY_AND_ASSIGN(SubKeyRequest); 79 DISALLOW_COPY_AND_ASSIGN(SubKeyRequest);
70 }; 80 };
71 81
72 } // namespace 82 } // namespace
73 83
74 SubKeyRequester::SubKeyRequester(std::unique_ptr<Source> source, 84 SubKeyRequester::SubKeyRequester(std::unique_ptr<Source> source,
75 std::unique_ptr<Storage> storage) 85 std::unique_ptr<Storage> storage)
76 : address_validator_(std::move(source), std::move(storage), this) {} 86 : address_validator_(std::move(source), std::move(storage), this) {}
77 87
78 SubKeyRequester::~SubKeyRequester() {} 88 SubKeyRequester::~SubKeyRequester() {}
79 89
80 void SubKeyRequester::StartRegionSubKeysRequest(const std::string& region_code, 90 void SubKeyRequester::StartRegionSubKeysRequest(const std::string& region_code,
91 const std::string& language,
81 int timeout_seconds, 92 int timeout_seconds,
82 SubKeyReceiverCallback cb) { 93 SubKeyReceiverCallback cb) {
83 DCHECK(timeout_seconds >= 0); 94 DCHECK(timeout_seconds >= 0);
84 95
85 std::unique_ptr<SubKeyRequest> request(base::MakeUnique<SubKeyRequest>( 96 std::unique_ptr<SubKeyRequest> request(
86 region_code, timeout_seconds, &address_validator_, std::move(cb))); 97 base::MakeUnique<SubKeyRequest>(region_code, language, timeout_seconds,
98 &address_validator_, std::move(cb)));
87 99
88 if (AreRulesLoadedForRegion(region_code)) { 100 if (AreRulesLoadedForRegion(region_code)) {
89 request->OnRulesLoaded(); 101 request->OnRulesLoaded();
90 } else { 102 } else {
91 // Setup the variables so that the subkeys request is sent, when the rules 103 // Setup the variables so that the subkeys request is sent, when the rules
92 // are loaded. 104 // are loaded.
93 pending_subkey_region_code_ = region_code; 105 pending_subkey_region_code_ = region_code;
94 pending_subkey_request_ = std::move(request); 106 pending_subkey_request_ = std::move(request);
95 107
96 // Start loading the rules for that region. If the rules were already in the 108 // Start loading the rules for that region. If the rules were already in the
(...skipping 23 matching lines...) Expand all
120 pending_subkey_region_code_.clear(); 132 pending_subkey_region_code_.clear();
121 pending_subkey_request_.reset(); 133 pending_subkey_request_.reset();
122 } 134 }
123 135
124 void SubKeyRequester::CancelPendingGetSubKeys() { 136 void SubKeyRequester::CancelPendingGetSubKeys() {
125 pending_subkey_region_code_.clear(); 137 pending_subkey_region_code_.clear();
126 pending_subkey_request_.reset(); 138 pending_subkey_request_.reset();
127 } 139 }
128 140
129 } // namespace payments 141 } // namespace payments
OLDNEW
« no previous file with comments | « components/payments/core/subkey_requester.h ('k') | components/payments/core/subkey_requester_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698