| 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" |
| 11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 13 #include "base/time/time.h" | 13 #include "base/time/time.h" |
| 14 #include "components/autofill/content/common/autofill_messages.h" | 14 #include "components/autofill/content/common/autofill_messages.h" |
| 15 #include "components/autofill/content/renderer/form_autofill_util.h" | 15 #include "components/autofill/content/renderer/form_autofill_util.h" |
| 16 #include "components/autofill/content/renderer/page_click_tracker.h" | 16 #include "components/autofill/content/renderer/page_click_tracker.h" |
| 17 #include "components/autofill/content/renderer/password_autofill_agent.h" | 17 #include "components/autofill/content/renderer/password_autofill_agent.h" |
| 18 #include "components/autofill/content/renderer/password_generation_agent.h" |
| 18 #include "components/autofill/core/common/autofill_constants.h" | 19 #include "components/autofill/core/common/autofill_constants.h" |
| 19 #include "components/autofill/core/common/autofill_data_validation.h" | 20 #include "components/autofill/core/common/autofill_data_validation.h" |
| 20 #include "components/autofill/core/common/autofill_switches.h" | 21 #include "components/autofill/core/common/autofill_switches.h" |
| 21 #include "components/autofill/core/common/form_data.h" | 22 #include "components/autofill/core/common/form_data.h" |
| 22 #include "components/autofill/core/common/form_data_predictions.h" | 23 #include "components/autofill/core/common/form_data_predictions.h" |
| 23 #include "components/autofill/core/common/form_field_data.h" | 24 #include "components/autofill/core/common/form_field_data.h" |
| 24 #include "components/autofill/core/common/password_form.h" | 25 #include "components/autofill/core/common/password_form.h" |
| 25 #include "components/autofill/core/common/web_element_descriptor.h" | 26 #include "components/autofill/core/common/web_element_descriptor.h" |
| 26 #include "content/public/common/content_switches.h" | 27 #include "content/public/common/content_switches.h" |
| 27 #include "content/public/common/ssl_status.h" | 28 #include "content/public/common/ssl_status.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 if (strings->size() > kMaxListSize) | 103 if (strings->size() > kMaxListSize) |
| 103 strings->resize(kMaxListSize); | 104 strings->resize(kMaxListSize); |
| 104 | 105 |
| 105 // Limit the size of the strings in the vector. | 106 // Limit the size of the strings in the vector. |
| 106 for (size_t i = 0; i < strings->size(); ++i) { | 107 for (size_t i = 0; i < strings->size(); ++i) { |
| 107 if ((*strings)[i].length() > kMaxDataLength) | 108 if ((*strings)[i].length() > kMaxDataLength) |
| 108 (*strings)[i].resize(kMaxDataLength); | 109 (*strings)[i].resize(kMaxDataLength); |
| 109 } | 110 } |
| 110 } | 111 } |
| 111 | 112 |
| 112 gfx::RectF GetScaledBoundingBox(float scale, WebInputElement* element) { | |
| 113 gfx::Rect bounding_box(element->boundsInViewportSpace()); | |
| 114 return gfx::RectF(bounding_box.x() * scale, | |
| 115 bounding_box.y() * scale, | |
| 116 bounding_box.width() * scale, | |
| 117 bounding_box.height() * scale); | |
| 118 } | |
| 119 | |
| 120 } // namespace | 113 } // namespace |
| 121 | 114 |
| 122 AutofillAgent::AutofillAgent(content::RenderView* render_view, | 115 AutofillAgent::AutofillAgent(content::RenderView* render_view, |
| 123 PasswordAutofillAgent* password_autofill_agent) | 116 PasswordAutofillAgent* password_autofill_agent, |
| 117 PasswordGenerationAgent* password_generation_agent) |
| 124 : content::RenderViewObserver(render_view), | 118 : content::RenderViewObserver(render_view), |
| 125 password_autofill_agent_(password_autofill_agent), | 119 password_autofill_agent_(password_autofill_agent), |
| 120 password_generation_agent_(password_generation_agent), |
| 126 autofill_query_id_(0), | 121 autofill_query_id_(0), |
| 127 autofill_action_(AUTOFILL_NONE), | 122 autofill_action_(AUTOFILL_NONE), |
| 128 web_view_(render_view->GetWebView()), | 123 web_view_(render_view->GetWebView()), |
| 129 display_warning_if_disabled_(false), | 124 display_warning_if_disabled_(false), |
| 130 was_query_node_autofilled_(false), | 125 was_query_node_autofilled_(false), |
| 131 has_shown_autofill_popup_for_current_edit_(false), | 126 has_shown_autofill_popup_for_current_edit_(false), |
| 132 did_set_node_text_(false), | 127 did_set_node_text_(false), |
| 133 has_new_forms_for_browser_(false), | 128 has_new_forms_for_browser_(false), |
| 134 ignore_text_changes_(false), | 129 ignore_text_changes_(false), |
| 135 weak_ptr_factory_(this) { | 130 weak_ptr_factory_(this) { |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 weak_ptr_factory_.GetWeakPtr(), | 322 weak_ptr_factory_.GetWeakPtr(), |
| 328 element)); | 323 element)); |
| 329 } | 324 } |
| 330 | 325 |
| 331 void AutofillAgent::TextFieldDidChangeImpl(const WebInputElement& element) { | 326 void AutofillAgent::TextFieldDidChangeImpl(const WebInputElement& element) { |
| 332 // If the element isn't focused then the changes don't matter. This check is | 327 // If the element isn't focused then the changes don't matter. This check is |
| 333 // required to properly handle IME interactions. | 328 // required to properly handle IME interactions. |
| 334 if (!element.focused()) | 329 if (!element.focused()) |
| 335 return; | 330 return; |
| 336 | 331 |
| 332 if (password_generation_agent_ && |
| 333 password_generation_agent_->TextDidChangeInTextField(element)) { |
| 334 return; |
| 335 } |
| 336 |
| 337 if (password_autofill_agent_->TextDidChangeInTextField(element)) { | 337 if (password_autofill_agent_->TextDidChangeInTextField(element)) { |
| 338 element_ = element; | 338 element_ = element; |
| 339 return; | 339 return; |
| 340 } | 340 } |
| 341 | 341 |
| 342 ShowSuggestions(element, false, true, false, false); | 342 ShowSuggestions(element, false, true, false, false); |
| 343 | 343 |
| 344 FormData form; | 344 FormData form; |
| 345 FormFieldData field; | 345 FormFieldData field; |
| 346 if (FindFormAndFieldForInputElement(element, &form, &field, REQUIRE_NONE)) { | 346 if (FindFormAndFieldForInputElement(element, &form, &field, REQUIRE_NONE)) { |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 // Only monitors dynamic forms created in the top frame. Dynamic forms | 630 // Only monitors dynamic forms created in the top frame. Dynamic forms |
| 631 // inserted in iframes are not captured yet. | 631 // inserted in iframes are not captured yet. |
| 632 if (!frame->parent()) { | 632 if (!frame->parent()) { |
| 633 password_autofill_agent_->OnDynamicFormsSeen(frame); | 633 password_autofill_agent_->OnDynamicFormsSeen(frame); |
| 634 return; | 634 return; |
| 635 } | 635 } |
| 636 } | 636 } |
| 637 } | 637 } |
| 638 | 638 |
| 639 } // namespace autofill | 639 } // namespace autofill |
| OLD | NEW |