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

Side by Side Diff: components/autofill/content/browser/wallet/wallet_client.h

Issue 123733002: WalletClient: don't bother queuing requests; we don't make multiple requests concurrently anyway (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 6 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #ifndef COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_WALLET_CLIENT_H_ 5 #ifndef COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_WALLET_CLIENT_H_
6 #define COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_WALLET_CLIENT_H_ 6 #define COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_WALLET_CLIENT_H_
7 7
8 #include <queue> 8 #include <queue>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 // and address to be updated on the server (and should be NULL if |instrument| 171 // and address to be updated on the server (and should be NULL if |instrument|
172 // or |address| are new data). 172 // or |address| are new data).
173 virtual void SaveToWallet( 173 virtual void SaveToWallet(
174 scoped_ptr<Instrument> instrument, 174 scoped_ptr<Instrument> instrument,
175 scoped_ptr<Address> address, 175 scoped_ptr<Address> address,
176 const WalletItems::MaskedInstrument* reference_instrument, 176 const WalletItems::MaskedInstrument* reference_instrument,
177 const Address* reference_address); 177 const Address* reference_address);
178 178
179 bool HasRequestInProgress() const; 179 bool HasRequestInProgress() const;
180 180
181 // Cancels and clears the current |request_| and |pending_requests_| (if any). 181 // Cancels and clears the current |request_|.
182 void CancelRequests(); 182 void CancelRequest();
183 183
184 // Sets the user index and cancels any pending requests. 184 // Sets the user index and cancels any pending requests.
185 void SetUserIndex(size_t user_index); 185 void SetUserIndex(size_t user_index);
186 size_t user_index() const { return user_index_; } 186 size_t user_index() const { return user_index_; }
187 187
188 private: 188 private:
189 FRIEND_TEST_ALL_PREFIXES(WalletClientTest, PendingRequest); 189 FRIEND_TEST_ALL_PREFIXES(WalletClientTest, PendingRequest);
190 FRIEND_TEST_ALL_PREFIXES(WalletClientTest, CancelRequests); 190 FRIEND_TEST_ALL_PREFIXES(WalletClientTest, CancelRequests);
191 191
192 enum RequestType { 192 enum RequestType {
193 NO_PENDING_REQUEST, 193 NO_REQUEST,
194 ACCEPT_LEGAL_DOCUMENTS, 194 ACCEPT_LEGAL_DOCUMENTS,
195 AUTHENTICATE_INSTRUMENT, 195 AUTHENTICATE_INSTRUMENT,
196 GET_FULL_WALLET, 196 GET_FULL_WALLET,
197 GET_WALLET_ITEMS, 197 GET_WALLET_ITEMS,
198 SAVE_TO_WALLET, 198 SAVE_TO_WALLET,
199 }; 199 };
200 200
201 // Like AcceptLegalDocuments, but takes a vector of document ids. 201 // Like AcceptLegalDocuments, but takes a vector of document ids.
202 void DoAcceptLegalDocuments( 202 void DoAcceptLegalDocuments(
203 const std::vector<std::string>& document_ids, 203 const std::vector<std::string>& document_ids,
204 const std::string& google_transaction_id); 204 const std::string& google_transaction_id);
205 205
206 // Posts |post_body| to |url| with content type |mime_type| and notifies 206 // Posts |post_body| to |url| with content type |mime_type| and notifies
207 // |delegate_| when the request is complete. 207 // |delegate_| when the request is complete.
208 void MakeWalletRequest(const GURL& url, 208 void MakeWalletRequest(const GURL& url,
209 const std::string& post_body, 209 const std::string& post_body,
210 const std::string& mime_type, 210 const std::string& mime_type,
211 RequestType request_type); 211 RequestType request_type);
212 212
213 // Performs bookkeeping tasks for any invalid requests. 213 // Performs bookkeeping tasks for any invalid requests.
214 void HandleMalformedResponse(RequestType request_type, 214 void HandleMalformedResponse(RequestType request_type,
215 net::URLFetcher* request); 215 net::URLFetcher* request);
216 void HandleNetworkError(int response_code); 216 void HandleNetworkError(int response_code);
217 void HandleWalletError(ErrorType error_type); 217 void HandleWalletError(ErrorType error_type);
218 218
219 // Start the next pending request (if any).
220 void StartNextPendingRequest();
221
222 // net::URLFetcherDelegate: 219 // net::URLFetcherDelegate:
223 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 220 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
224 221
225 // Logs an UMA metric for each of the |required_actions|. 222 // Logs an UMA metric for each of the |required_actions|.
226 void LogRequiredActions( 223 void LogRequiredActions(
227 const std::vector<RequiredAction>& required_actions) const; 224 const std::vector<RequiredAction>& required_actions) const;
228 225
229 // Converts |request_type| to an UMA metric. 226 // Converts |request_type| to an UMA metric.
230 AutofillMetrics::WalletApiCallMetric RequestTypeToUmaMetric( 227 AutofillMetrics::WalletApiCallMetric RequestTypeToUmaMetric(
231 RequestType request_type) const; 228 RequestType request_type) const;
232 229
233 // The context for the request. Ensures the gdToken cookie is set as a header 230 // The context for the request. Ensures the gdToken cookie is set as a header
234 // in the requests to Online Wallet if it is present. 231 // in the requests to Online Wallet if it is present.
235 scoped_refptr<net::URLRequestContextGetter> context_getter_; 232 scoped_refptr<net::URLRequestContextGetter> context_getter_;
236 233
237 // Observer class that has its various On* methods called based on the results 234 // Observer class that has its various On* methods called based on the results
238 // of a request to Online Wallet. 235 // of a request to Online Wallet.
239 WalletClientDelegate* const delegate_; // must outlive |this|. 236 WalletClientDelegate* const delegate_; // must outlive |this|.
240 237
241 // The index of the user account we're making requests for. The index is into 238 // The index of the user account we're making requests for. The index is into
242 // GAIA's list of signed in users. 239 // GAIA's list of signed in users.
243 size_t user_index_; 240 size_t user_index_;
244 241
245 // The URL of the page we're making requests on behalf of. 242 // The URL of the page we're making requests on behalf of.
246 GURL source_url_; 243 GURL source_url_;
247 244
248 // The current request object. 245 // The current request object.
249 scoped_ptr<net::URLFetcher> request_; 246 scoped_ptr<net::URLFetcher> request_;
250 247
251 // The type of the current request. Must be NO_PENDING_REQUEST for a request 248 // The type of the current request. Must be NO_REQUEST for a request
252 // to be initiated as only one request may be running at a given time. 249 // to be initiated as only one request may be running at a given time.
253 RequestType request_type_; 250 RequestType request_type_;
254 251
255 // The one time pad used for GetFullWallet encryption. 252 // The one time pad used for GetFullWallet encryption.
256 std::vector<uint8> one_time_pad_; 253 std::vector<uint8> one_time_pad_;
257 254
258 // Requests that are waiting to be run.
259 std::queue<base::Closure> pending_requests_;
260
261 // When the current request started. Used to track client side latency. 255 // When the current request started. Used to track client side latency.
262 base::Time request_started_timestamp_; 256 base::Time request_started_timestamp_;
263 257
264 base::WeakPtrFactory<WalletClient> weak_ptr_factory_; 258 base::WeakPtrFactory<WalletClient> weak_ptr_factory_;
265 259
266 DISALLOW_COPY_AND_ASSIGN(WalletClient); 260 DISALLOW_COPY_AND_ASSIGN(WalletClient);
267 }; 261 };
268 262
269 } // namespace wallet 263 } // namespace wallet
270 } // namespace autofill 264 } // namespace autofill
271 265
272 #endif // COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_WALLET_CLIENT_H_ 266 #endif // COMPONENTS_AUTOFILL_CONTENT_BROWSER_WALLET_WALLET_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698