| OLD | NEW | 
|---|
| 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 #include "components/autofill/content/renderer/autofill_agent.h" | 5 #include "components/autofill/content/renderer/autofill_agent.h" | 
| 6 | 6 | 
| 7 #include "base/bind.h" | 7 #include "base/bind.h" | 
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" | 
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" | 
| 10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 73                             bool ignore_current_value, | 73                             bool ignore_current_value, | 
| 74                             std::vector<base::string16>* values, | 74                             std::vector<base::string16>* values, | 
| 75                             std::vector<base::string16>* labels) { | 75                             std::vector<base::string16>* labels) { | 
| 76   WebElementCollection options = element.dataListOptions(); | 76   WebElementCollection options = element.dataListOptions(); | 
| 77   if (options.isNull()) | 77   if (options.isNull()) | 
| 78     return; | 78     return; | 
| 79 | 79 | 
| 80   base::string16 prefix; | 80   base::string16 prefix; | 
| 81   if (!ignore_current_value) { | 81   if (!ignore_current_value) { | 
| 82     prefix = element.editingValue(); | 82     prefix = element.editingValue(); | 
| 83     if (element.isMultiple() && | 83     if (element.isMultiple() && element.isEmailField()) { | 
| 84         element.formControlType() == WebString::fromUTF8("email")) { |  | 
| 85       std::vector<base::string16> parts; | 84       std::vector<base::string16> parts; | 
| 86       base::SplitStringDontTrim(prefix, ',', &parts); | 85       base::SplitStringDontTrim(prefix, ',', &parts); | 
| 87       if (parts.size() > 0) { | 86       if (parts.size() > 0) { | 
| 88         base::TrimWhitespace(parts[parts.size() - 1], base::TRIM_LEADING, | 87         base::TrimWhitespace(parts[parts.size() - 1], base::TRIM_LEADING, | 
| 89                              &prefix); | 88                              &prefix); | 
| 90       } | 89       } | 
| 91     } | 90     } | 
| 92   } | 91   } | 
| 93   for (WebOptionElement option = options.firstItem().to<WebOptionElement>(); | 92   for (WebOptionElement option = options.firstItem().to<WebOptionElement>(); | 
| 94        !option.isNull(); option = options.nextItem().to<WebOptionElement>()) { | 93        !option.isNull(); option = options.nextItem().to<WebOptionElement>()) { | 
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 407   password_autofill_agent_->FirstUserGestureObserved(); | 406   password_autofill_agent_->FirstUserGestureObserved(); | 
| 408 } | 407 } | 
| 409 | 408 | 
| 410 void AutofillAgent::AcceptDataListSuggestion( | 409 void AutofillAgent::AcceptDataListSuggestion( | 
| 411     const base::string16& suggested_value) { | 410     const base::string16& suggested_value) { | 
| 412   WebInputElement* input_element = toWebInputElement(&element_); | 411   WebInputElement* input_element = toWebInputElement(&element_); | 
| 413   DCHECK(input_element); | 412   DCHECK(input_element); | 
| 414   base::string16 new_value = suggested_value; | 413   base::string16 new_value = suggested_value; | 
| 415   // If this element takes multiple values then replace the last part with | 414   // If this element takes multiple values then replace the last part with | 
| 416   // the suggestion. | 415   // the suggestion. | 
| 417   if (input_element->isMultiple() && | 416   if (input_element->isMultiple() && input_element->isEmailField()) { | 
| 418       input_element->formControlType() == WebString::fromUTF8("email")) { |  | 
| 419     std::vector<base::string16> parts; | 417     std::vector<base::string16> parts; | 
| 420 | 418 | 
| 421     base::SplitStringDontTrim(input_element->editingValue(), ',', &parts); | 419     base::SplitStringDontTrim(input_element->editingValue(), ',', &parts); | 
| 422     if (parts.size() == 0) | 420     if (parts.size() == 0) | 
| 423       parts.push_back(base::string16()); | 421       parts.push_back(base::string16()); | 
| 424 | 422 | 
| 425     base::string16 last_part = parts.back(); | 423     base::string16 last_part = parts.back(); | 
| 426     // We want to keep just the leading whitespace. | 424     // We want to keep just the leading whitespace. | 
| 427     for (size_t i = 0; i < last_part.size(); ++i) { | 425     for (size_t i = 0; i < last_part.size(); ++i) { | 
| 428       if (!IsWhitespace(last_part[i])) { | 426       if (!IsWhitespace(last_part[i])) { | 
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 721     // parsed form. | 719     // parsed form. | 
| 722     if (frame && !frame->parent() && !frame->isLoading()) { | 720     if (frame && !frame->parent() && !frame->isLoading()) { | 
| 723       ProcessForms(*frame); | 721       ProcessForms(*frame); | 
| 724       password_autofill_agent_->OnDynamicFormsSeen(frame); | 722       password_autofill_agent_->OnDynamicFormsSeen(frame); | 
| 725       return; | 723       return; | 
| 726     } | 724     } | 
| 727   } | 725   } | 
| 728 } | 726 } | 
| 729 | 727 | 
| 730 }  // namespace autofill | 728 }  // namespace autofill | 
| OLD | NEW | 
|---|