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

Side by Side Diff: components/autofill/core/browser/autofill_download_manager.cc

Issue 1457793002: [Autofill] No longer pass FormStructure pointers in ParseQueryResponse. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added AutofillManager tests Created 5 years, 1 month 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/autofill/core/browser/autofill_download_manager.h" 5 #include "components/autofill/core/browser/autofill_download_manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/rand_util.h" 9 #include "base/rand_util.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 58
59 GURL GetRequestUrl(AutofillDownloadManager::RequestType request_type) { 59 GURL GetRequestUrl(AutofillDownloadManager::RequestType request_type) {
60 return GURL("https://clients1.google.com/tbproxy/af/" + 60 return GURL("https://clients1.google.com/tbproxy/af/" +
61 RequestTypeToString(request_type) + "?client=" + kClientName); 61 RequestTypeToString(request_type) + "?client=" + kClientName);
62 } 62 }
63 63
64 } // namespace 64 } // namespace
65 65
66 struct AutofillDownloadManager::FormRequestData { 66 struct AutofillDownloadManager::FormRequestData {
67 std::vector<std::string> form_signatures; 67 std::vector<std::string> form_signatures;
68 std::vector<FormStructure*> queried_forms;
69 RequestType request_type; 68 RequestType request_type;
70 }; 69 };
71 70
72 AutofillDownloadManager::AutofillDownloadManager(AutofillDriver* driver, 71 AutofillDownloadManager::AutofillDownloadManager(AutofillDriver* driver,
73 PrefService* pref_service, 72 PrefService* pref_service,
74 Observer* observer) 73 Observer* observer)
75 : driver_(driver), 74 : driver_(driver),
76 pref_service_(pref_service), 75 pref_service_(pref_service),
77 observer_(observer), 76 observer_(observer),
78 max_form_cache_size_(kMaxFormCacheSize), 77 max_form_cache_size_(kMaxFormCacheSize),
(...skipping 22 matching lines...) Expand all
101 } 100 }
102 101
103 // Do not send the request if it contains more fields than the server can 102 // Do not send the request if it contains more fields than the server can
104 // accept. 103 // accept.
105 if (CountActiveFieldsInForms(forms) > kMaxFieldsPerQueryRequest) 104 if (CountActiveFieldsInForms(forms) > kMaxFieldsPerQueryRequest)
106 return false; 105 return false;
107 106
108 std::string form_xml; 107 std::string form_xml;
109 FormRequestData request_data; 108 FormRequestData request_data;
110 if (!FormStructure::EncodeQueryRequest(forms, &request_data.form_signatures, 109 if (!FormStructure::EncodeQueryRequest(forms, &request_data.form_signatures,
111 &request_data.queried_forms,
112 &form_xml)) { 110 &form_xml)) {
113 return false; 111 return false;
114 } 112 }
115 113
116 request_data.request_type = AutofillDownloadManager::REQUEST_QUERY; 114 request_data.request_type = AutofillDownloadManager::REQUEST_QUERY;
117 AutofillMetrics::LogServerQueryMetric(AutofillMetrics::QUERY_SENT); 115 AutofillMetrics::LogServerQueryMetric(AutofillMetrics::QUERY_SENT);
118 116
119 std::string query_data; 117 std::string query_data;
120 if (CheckCacheForQueryRequest(request_data.form_signatures, &query_data)) { 118 if (CheckCacheForQueryRequest(request_data.form_signatures, &query_data)) {
121 VLOG(1) << "AutofillDownloadManager: query request has been retrieved " 119 VLOG(1) << "AutofillDownloadManager: query request has been retrieved "
122 << "from the cache, form signatures: " 120 << "from the cache, form signatures: "
123 << GetCombinedSignature(request_data.form_signatures); 121 << GetCombinedSignature(request_data.form_signatures);
124 observer_->OnLoadedServerPredictions(query_data, 122 observer_->OnLoadedServerPredictions(query_data,
125 request_data.queried_forms); 123 request_data.form_signatures);
126 return true; 124 return true;
127 } 125 }
128 126
129 return StartRequest(form_xml, request_data); 127 return StartRequest(form_xml, request_data);
130 } 128 }
131 129
132 bool AutofillDownloadManager::StartUploadRequest( 130 bool AutofillDownloadManager::StartUploadRequest(
133 const FormStructure& form, 131 const FormStructure& form,
134 bool form_was_autofilled, 132 bool form_was_autofilled,
135 const ServerFieldTypeSet& available_field_types, 133 const ServerFieldTypeSet& available_field_types,
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 it->second.request_type, 336 it->second.request_type,
339 source->GetResponseCode()); 337 source->GetResponseCode());
340 } else { 338 } else {
341 std::string response_body; 339 std::string response_body;
342 source->GetResponseAsString(&response_body); 340 source->GetResponseAsString(&response_body);
343 VLOG(1) << "AutofillDownloadManager: " << request_type 341 VLOG(1) << "AutofillDownloadManager: " << request_type
344 << " request has succeeded with response body: " << response_body; 342 << " request has succeeded with response body: " << response_body;
345 if (it->second.request_type == AutofillDownloadManager::REQUEST_QUERY) { 343 if (it->second.request_type == AutofillDownloadManager::REQUEST_QUERY) {
346 CacheQueryRequest(it->second.form_signatures, response_body); 344 CacheQueryRequest(it->second.form_signatures, response_body);
347 observer_->OnLoadedServerPredictions(response_body, 345 observer_->OnLoadedServerPredictions(response_body,
348 it->second.queried_forms); 346 it->second.form_signatures);
349 } else { 347 } else {
350 double new_positive_upload_rate = 0; 348 double new_positive_upload_rate = 0;
351 double new_negative_upload_rate = 0; 349 double new_negative_upload_rate = 0;
352 AutofillUploadXmlParser parse_handler(&new_positive_upload_rate, 350 AutofillUploadXmlParser parse_handler(&new_positive_upload_rate,
353 &new_negative_upload_rate); 351 &new_negative_upload_rate);
354 buzz::XmlParser parser(&parse_handler); 352 buzz::XmlParser parser(&parse_handler);
355 parser.Parse(response_body.data(), response_body.length(), true); 353 parser.Parse(response_body.data(), response_body.length(), true);
356 if (parse_handler.succeeded()) { 354 if (parse_handler.succeeded()) {
357 SetPositiveUploadRate(new_positive_upload_rate); 355 SetPositiveUploadRate(new_positive_upload_rate);
358 SetNegativeUploadRate(new_negative_upload_rate); 356 SetNegativeUploadRate(new_negative_upload_rate);
359 } 357 }
360 358
361 observer_->OnUploadedPossibleFieldTypes(); 359 observer_->OnUploadedPossibleFieldTypes();
362 } 360 }
363 } 361 }
364 delete it->first; 362 delete it->first;
365 url_fetchers_.erase(it); 363 url_fetchers_.erase(it);
366 } 364 }
367 365
368 } // namespace autofill 366 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698