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

Side by Side Diff: ios/chrome/browser/autofill/autofill_agent.mm

Issue 2816513002: Revert of Change base::Value::ListStorage to std::vector<base::Value> (Closed)
Patch Set: Created 3 years, 8 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 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 #import "ios/chrome/browser/autofill/autofill_agent.h" 5 #import "ios/chrome/browser/autofill/autofill_agent.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 fieldData->role = autofill::AutofillField::ROLE_ATTRIBUTE_PRESENTATION; 260 fieldData->role = autofill::AutofillField::ROLE_ATTRIBUTE_PRESENTATION;
261 } 261 }
262 262
263 // TODO(crbug.com/427614): Extract |text_direction|. 263 // TODO(crbug.com/427614): Extract |text_direction|.
264 264
265 // Load option values where present. 265 // Load option values where present.
266 const base::ListValue* optionValues; 266 const base::ListValue* optionValues;
267 if (field.GetList("option_values", &optionValues)) { 267 if (field.GetList("option_values", &optionValues)) {
268 for (const auto& optionValue : *optionValues) { 268 for (const auto& optionValue : *optionValues) {
269 base::string16 value; 269 base::string16 value;
270 if (optionValue.GetAsString(&value)) 270 if (optionValue->GetAsString(&value))
271 fieldData->option_values.push_back(value); 271 fieldData->option_values.push_back(value);
272 } 272 }
273 } 273 }
274 274
275 // Load option contents where present. 275 // Load option contents where present.
276 const base::ListValue* optionContents; 276 const base::ListValue* optionContents;
277 if (field.GetList("option_contents", &optionContents)) { 277 if (field.GetList("option_contents", &optionContents)) {
278 for (const auto& optionContent : *optionContents) { 278 for (const auto& optionContent : *optionContents) {
279 base::string16 content; 279 base::string16 content;
280 if (optionContent.GetAsString(&content)) 280 if (optionContent->GetAsString(&content))
281 fieldData->option_contents.push_back(content); 281 fieldData->option_contents.push_back(content);
282 } 282 }
283 } 283 }
284 284
285 if (fieldData->option_values.size() != fieldData->option_contents.size()) 285 if (fieldData->option_values.size() != fieldData->option_contents.size())
286 return NO; // Option values and contents lists should match 1-1. 286 return NO; // Option values and contents lists should match 1-1.
287 287
288 return YES; 288 return YES;
289 } 289 }
290 290
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 // Get the list of forms. 358 // Get the list of forms.
359 const base::ListValue* formsList; 359 const base::ListValue* formsList;
360 if (!data->GetList("forms", &formsList)) 360 if (!data->GetList("forms", &formsList))
361 return NO; 361 return NO;
362 362
363 // Iterate through all the extracted forms and copy the data from JSON into 363 // Iterate through all the extracted forms and copy the data from JSON into
364 // AutofillManager structures. 364 // AutofillManager structures.
365 for (const auto& formDict : *formsList) { 365 for (const auto& formDict : *formsList) {
366 // Each form list entry should be a JSON dictionary. 366 // Each form list entry should be a JSON dictionary.
367 const base::DictionaryValue* formData; 367 const base::DictionaryValue* formData;
368 if (!formDict.GetAsDictionary(&formData)) 368 if (!formDict->GetAsDictionary(&formData))
369 return NO; 369 return NO;
370 370
371 // Form data is copied into a FormData object field-by-field. 371 // Form data is copied into a FormData object field-by-field.
372 autofill::FormData form; 372 autofill::FormData form;
373 if (!formData->GetString("name", &form.name)) 373 if (!formData->GetString("name", &form.name))
374 return NO; 374 return NO;
375 if (!formName.empty() && formName != form.name) 375 if (!formName.empty() && formName != form.name)
376 continue; 376 continue;
377 377
378 // Origin is mandatory. 378 // Origin is mandatory.
(...skipping 18 matching lines...) Expand all
397 if (formData->GetBoolean("is_form_tag", &is_form_tag)) 397 if (formData->GetBoolean("is_form_tag", &is_form_tag))
398 form.is_form_tag = is_form_tag; 398 form.is_form_tag = is_form_tag;
399 399
400 // Field list (mandatory) is extracted. 400 // Field list (mandatory) is extracted.
401 const base::ListValue* fieldsList; 401 const base::ListValue* fieldsList;
402 if (!formData->GetList("fields", &fieldsList)) 402 if (!formData->GetList("fields", &fieldsList))
403 return NO; 403 return NO;
404 for (const auto& fieldDict : *fieldsList) { 404 for (const auto& fieldDict : *fieldsList) {
405 const base::DictionaryValue* field; 405 const base::DictionaryValue* field;
406 autofill::FormFieldData fieldData; 406 autofill::FormFieldData fieldData;
407 if (fieldDict.GetAsDictionary(&field) && 407 if (fieldDict->GetAsDictionary(&field) &&
408 [self extractFormField:*field asFieldData:&fieldData]) { 408 [self extractFormField:*field asFieldData:&fieldData]) {
409 form.fields.push_back(fieldData); 409 form.fields.push_back(fieldData);
410 } else { 410 } else {
411 return NO; 411 return NO;
412 } 412 }
413 } 413 }
414 formsData->push_back(form); 414 formsData->push_back(form);
415 } 415 }
416 return YES; 416 return YES;
417 } 417 }
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 } 860 }
861 predictionData.SetWithoutPathExpansion(base::UTF16ToUTF8(formData.name), 861 predictionData.SetWithoutPathExpansion(base::UTF16ToUTF8(formData.name),
862 formJSONData); 862 formJSONData);
863 } 863 }
864 std::string dataString; 864 std::string dataString;
865 base::JSONWriter::Write(predictionData, &dataString); 865 base::JSONWriter::Write(predictionData, &dataString);
866 [jsAutofillManager_ fillPredictionData:base::SysUTF8ToNSString(dataString)]; 866 [jsAutofillManager_ fillPredictionData:base::SysUTF8ToNSString(dataString)];
867 } 867 }
868 868
869 @end 869 @end
OLDNEW
« no previous file with comments | « headless/public/internal/value_conversions.h ('k') | ios/web/web_state/ui/crw_web_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698