| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/autofill/autofill_manager.h" | 5 #include "chrome/browser/autofill/autofill_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <map> | 10 #include <map> |
| 11 #include <set> | 11 #include <set> |
| 12 #include <utility> | 12 #include <utility> |
| 13 | 13 |
| 14 #include "base/command_line.h" | 14 #include "base/command_line.h" |
| 15 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "base/string16.h" | 16 #include "base/string16.h" |
| 17 #include "base/string_util.h" | 17 #include "base/string_util.h" |
| 18 #include "base/utf_string_conversions.h" | 18 #include "base/utf_string_conversions.h" |
| 19 #include "chrome/browser/autocomplete_history_manager.h" | 19 #include "chrome/browser/autocomplete_history_manager.h" |
| 20 #include "chrome/browser/autofill/autofill_cc_infobar_delegate.h" | 20 #include "chrome/browser/autofill/autofill_cc_infobar_delegate.h" |
| 21 #include "chrome/browser/autofill/autofill_feedback_infobar_delegate.h" | 21 #include "chrome/browser/autofill/autofill_feedback_infobar_delegate.h" |
| 22 #include "chrome/browser/autofill/autofill_external_delegate.h" |
| 22 #include "chrome/browser/autofill/autofill_field.h" | 23 #include "chrome/browser/autofill/autofill_field.h" |
| 23 #include "chrome/browser/autofill/autofill_metrics.h" | 24 #include "chrome/browser/autofill/autofill_metrics.h" |
| 24 #include "chrome/browser/autofill/autofill_profile.h" | 25 #include "chrome/browser/autofill/autofill_profile.h" |
| 25 #include "chrome/browser/autofill/autofill_type.h" | 26 #include "chrome/browser/autofill/autofill_type.h" |
| 26 #include "chrome/browser/autofill/credit_card.h" | 27 #include "chrome/browser/autofill/credit_card.h" |
| 27 #include "chrome/browser/autofill/form_structure.h" | 28 #include "chrome/browser/autofill/form_structure.h" |
| 28 #include "chrome/browser/autofill/personal_data_manager.h" | 29 #include "chrome/browser/autofill/personal_data_manager.h" |
| 29 #include "chrome/browser/autofill/personal_data_manager_factory.h" | 30 #include "chrome/browser/autofill/personal_data_manager_factory.h" |
| 30 #include "chrome/browser/autofill/phone_number.h" | 31 #include "chrome/browser/autofill/phone_number.h" |
| 31 #include "chrome/browser/autofill/phone_number_i18n.h" | 32 #include "chrome/browser/autofill/phone_number_i18n.h" |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 tab_contents_wrapper_(tab_contents), | 210 tab_contents_wrapper_(tab_contents), |
| 210 personal_data_(NULL), | 211 personal_data_(NULL), |
| 211 download_manager_(tab_contents->profile(), this), | 212 download_manager_(tab_contents->profile(), this), |
| 212 disable_download_manager_requests_(false), | 213 disable_download_manager_requests_(false), |
| 213 metric_logger_(new AutofillMetrics), | 214 metric_logger_(new AutofillMetrics), |
| 214 has_logged_autofill_enabled_(false), | 215 has_logged_autofill_enabled_(false), |
| 215 has_logged_address_suggestions_count_(false), | 216 has_logged_address_suggestions_count_(false), |
| 216 did_show_suggestions_(false), | 217 did_show_suggestions_(false), |
| 217 user_did_type_(false), | 218 user_did_type_(false), |
| 218 user_did_autofill_(false), | 219 user_did_autofill_(false), |
| 219 user_did_edit_autofilled_field_(false) { | 220 user_did_edit_autofilled_field_(false), |
| 221 external_delegate_(NULL) { |
| 220 DCHECK(tab_contents); | 222 DCHECK(tab_contents); |
| 221 | 223 |
| 222 // |personal_data_| is NULL when using TestTabContents. | 224 // |personal_data_| is NULL when using TestTabContents. |
| 223 personal_data_ = PersonalDataManagerFactory::GetForProfile( | 225 personal_data_ = PersonalDataManagerFactory::GetForProfile( |
| 224 tab_contents->profile()->GetOriginalProfile()); | 226 tab_contents->profile()->GetOriginalProfile()); |
| 225 } | 227 } |
| 226 | 228 |
| 227 AutofillManager::~AutofillManager() { | 229 AutofillManager::~AutofillManager() { |
| 228 } | 230 } |
| 229 | 231 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 } | 375 } |
| 374 | 376 |
| 375 void AutofillManager::OnQueryFormFieldAutofill(int query_id, | 377 void AutofillManager::OnQueryFormFieldAutofill(int query_id, |
| 376 const FormData& form, | 378 const FormData& form, |
| 377 const FormField& field) { | 379 const FormField& field) { |
| 378 std::vector<string16> values; | 380 std::vector<string16> values; |
| 379 std::vector<string16> labels; | 381 std::vector<string16> labels; |
| 380 std::vector<string16> icons; | 382 std::vector<string16> icons; |
| 381 std::vector<int> unique_ids; | 383 std::vector<int> unique_ids; |
| 382 | 384 |
| 385 if (external_delegate_) |
| 386 external_delegate_->OnQuery(query_id, form, field); |
| 387 |
| 383 RenderViewHost* host = NULL; | 388 RenderViewHost* host = NULL; |
| 384 FormStructure* form_structure = NULL; | 389 FormStructure* form_structure = NULL; |
| 385 AutofillField* autofill_field = NULL; | 390 AutofillField* autofill_field = NULL; |
| 386 if (GetHost( | 391 if (GetHost( |
| 387 personal_data_->profiles(), personal_data_->credit_cards(), &host) && | 392 personal_data_->profiles(), personal_data_->credit_cards(), &host) && |
| 388 GetCachedFormAndField(form, field, &form_structure, &autofill_field) && | 393 GetCachedFormAndField(form, field, &form_structure, &autofill_field) && |
| 389 // Don't send suggestions for forms that aren't auto-fillable. | 394 // Don't send suggestions for forms that aren't auto-fillable. |
| 390 form_structure->IsAutofillable(false)) { | 395 form_structure->IsAutofillable(false)) { |
| 391 AutofillFieldType type = autofill_field->type(); | 396 AutofillFieldType type = autofill_field->type(); |
| 392 bool is_filling_credit_card = | 397 bool is_filling_credit_card = |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 tab_contents_wrapper_(tab_contents), | 731 tab_contents_wrapper_(tab_contents), |
| 727 personal_data_(personal_data), | 732 personal_data_(personal_data), |
| 728 download_manager_(tab_contents->profile(), this), | 733 download_manager_(tab_contents->profile(), this), |
| 729 disable_download_manager_requests_(true), | 734 disable_download_manager_requests_(true), |
| 730 metric_logger_(new AutofillMetrics), | 735 metric_logger_(new AutofillMetrics), |
| 731 has_logged_autofill_enabled_(false), | 736 has_logged_autofill_enabled_(false), |
| 732 has_logged_address_suggestions_count_(false), | 737 has_logged_address_suggestions_count_(false), |
| 733 did_show_suggestions_(false), | 738 did_show_suggestions_(false), |
| 734 user_did_type_(false), | 739 user_did_type_(false), |
| 735 user_did_autofill_(false), | 740 user_did_autofill_(false), |
| 736 user_did_edit_autofilled_field_(false) { | 741 user_did_edit_autofilled_field_(false), |
| 742 external_delegate_(NULL) { |
| 737 DCHECK(tab_contents); | 743 DCHECK(tab_contents); |
| 738 } | 744 } |
| 739 | 745 |
| 740 void AutofillManager::set_metric_logger(const AutofillMetrics* metric_logger) { | 746 void AutofillManager::set_metric_logger(const AutofillMetrics* metric_logger) { |
| 741 metric_logger_.reset(metric_logger); | 747 metric_logger_.reset(metric_logger); |
| 742 } | 748 } |
| 743 | 749 |
| 744 bool AutofillManager::GetHost(const std::vector<AutofillProfile*>& profiles, | 750 bool AutofillManager::GetHost(const std::vector<AutofillProfile*>& profiles, |
| 745 const std::vector<CreditCard*>& credit_cards, | 751 const std::vector<CreditCard*>& credit_cards, |
| 746 RenderViewHost** host) const { | 752 RenderViewHost** host) const { |
| (...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1219 *profile_guid = IDToGUID(profile_id); | 1225 *profile_guid = IDToGUID(profile_id); |
| 1220 } | 1226 } |
| 1221 | 1227 |
| 1222 void AutofillManager::UpdateInitialInteractionTimestamp( | 1228 void AutofillManager::UpdateInitialInteractionTimestamp( |
| 1223 const TimeTicks& interaction_timestamp) { | 1229 const TimeTicks& interaction_timestamp) { |
| 1224 if (initial_interaction_timestamp_.is_null() || | 1230 if (initial_interaction_timestamp_.is_null() || |
| 1225 interaction_timestamp < initial_interaction_timestamp_) { | 1231 interaction_timestamp < initial_interaction_timestamp_) { |
| 1226 initial_interaction_timestamp_ = interaction_timestamp; | 1232 initial_interaction_timestamp_ = interaction_timestamp; |
| 1227 } | 1233 } |
| 1228 } | 1234 } |
| OLD | NEW |