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

Unified Diff: components/autofill/browser/autofill_manager.cc

Issue 15097004: Enable Autocomplete feature for chromium webview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@setSaveFormData2
Patch Set: added a unit test Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: components/autofill/browser/autofill_manager.cc
diff --git a/components/autofill/browser/autofill_manager.cc b/components/autofill/browser/autofill_manager.cc
index e7b2171746ce9158104609e205bb0d90653e458a..6ecf9e934fd1580ccae0724bb6c855f80c97de97 100644
--- a/components/autofill/browser/autofill_manager.cc
+++ b/components/autofill/browser/autofill_manager.cc
@@ -329,19 +329,20 @@ bool AutofillManager::OnMessageReceived(const IPC::Message& message) {
bool AutofillManager::OnFormSubmitted(const FormData& form,
const TimeTicks& timestamp) {
- // Let AutoComplete know as well.
- autocomplete_history_manager_.OnFormSubmitted(form);
-
if (!IsAutofillEnabled())
return false;
- if (web_contents()->GetBrowserContext()->IsOffTheRecord())
- return false;
Ilya Sherman 2013/06/15 00:28:09 I think this check is still needed.
sgurun-gerrit only 2013/06/17 21:20:32 Done.
+ // Let AutoComplete know as well.
+ autocomplete_history_manager_.OnFormSubmitted(form);
Ilya Sherman 2013/06/15 00:28:09 Does this re-ordering still make sense given the u
sgurun-gerrit only 2013/06/17 21:20:32 There seems multiple issues with enabling/disablin
// Don't save data that was submitted through JavaScript.
if (!form.user_submitted)
return false;
+ // If there is no personal_data_, nothing to do.
+ if (!personal_data_)
+ return false;
+
// Grab a copy of the form data.
scoped_ptr<FormStructure> submitted_form(
new FormStructure(form, GetAutocheckoutURLPrefix()));
@@ -494,6 +495,27 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
display_warning);
}
+ GetAutofillSuggestions(form,
+ field,
+ &values,
+ &labels,
+ &icons,
+ &unique_ids);
Ilya Sherman 2013/06/15 00:28:09 nit: This all fits on a single line.
Ilya Sherman 2013/06/15 00:28:09 What's the purpose of decomposing out this method?
sgurun-gerrit only 2013/06/17 21:20:32 Done.
sgurun-gerrit only 2013/06/17 21:20:32 Done.
+
+ // Add the results from AutoComplete. They come back asynchronously, so we
+ // hand off what we generated and they will send the results back to the
+ // renderer.
+ autocomplete_history_manager_.OnGetAutocompleteSuggestions(
+ query_id, field.name, field.value, values, labels, icons, unique_ids);
+}
+
+void AutofillManager::GetAutofillSuggestions(
+ const FormData& form,
+ const FormFieldData& field,
+ std::vector<base::string16>* values,
+ std::vector<base::string16>* labels,
+ std::vector<string16>* icons,
+ std::vector<int>* unique_ids) {
RenderViewHost* host = NULL;
FormStructure* form_structure = NULL;
AutofillField* autofill_field = NULL;
@@ -506,17 +528,17 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
(AutofillType(type).group() == AutofillType::CREDIT_CARD);
if (is_filling_credit_card) {
GetCreditCardSuggestions(
- field, type, &values, &labels, &icons, &unique_ids);
+ field, type, values, labels, icons, unique_ids);
} else {
GetProfileSuggestions(
- form_structure, field, type, &values, &labels, &icons, &unique_ids);
+ form_structure, field, type, values, labels, icons, unique_ids);
}
- DCHECK_EQ(values.size(), labels.size());
- DCHECK_EQ(values.size(), icons.size());
- DCHECK_EQ(values.size(), unique_ids.size());
+ DCHECK_EQ(values->size(), labels->size());
+ DCHECK_EQ(values->size(), icons->size());
+ DCHECK_EQ(values->size(), unique_ids->size());
- if (!values.empty()) {
+ if (!values->empty()) {
// Don't provide Autofill suggestions when Autofill is disabled, and don't
// provide credit card suggestions for non-HTTPS pages. However, provide a
// warning to the user in these cases.
@@ -526,11 +548,11 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
else if (is_filling_credit_card && !FormIsHTTPS(*form_structure))
warning = IDS_AUTOFILL_WARNING_INSECURE_CONNECTION;
if (warning) {
- values.assign(1, l10n_util::GetStringUTF16(warning));
- labels.assign(1, base::string16());
- icons.assign(1, base::string16());
- unique_ids.assign(1,
- WebKit::WebAutofillClient::MenuItemIDWarningMessage);
+ values->assign(1, l10n_util::GetStringUTF16(warning));
+ labels->assign(1, base::string16());
+ icons->assign(1, base::string16());
+ unique_ids->assign(1,
+ WebKit::WebAutofillClient::MenuItemIDWarningMessage);
} else {
bool section_is_autofilled =
SectionIsAutofilled(*form_structure, form,
@@ -540,8 +562,8 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
// for suggestions, then the user is editing the value of a field.
// In this case, mimic autocomplete: don't display labels or icons,
// as that information is redundant.
- labels.assign(labels.size(), base::string16());
- icons.assign(icons.size(), base::string16());
+ labels->assign(labels->size(), base::string16());
+ icons->assign(icons->size(), base::string16());
}
// When filling credit card suggestions, the values and labels are
@@ -549,23 +571,17 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
// duplicates only tend to be a problem when filling address forms
// anyway, only don't de-dup credit card suggestions.
if (!is_filling_credit_card)
- RemoveDuplicateSuggestions(&values, &labels, &icons, &unique_ids);
+ RemoveDuplicateSuggestions(values, labels, icons, unique_ids);
// The first time we show suggestions on this page, log the number of
// suggestions shown.
if (!has_logged_address_suggestions_count_ && !section_is_autofilled) {
- metric_logger_->LogAddressSuggestionsCount(values.size());
+ metric_logger_->LogAddressSuggestionsCount(values->size());
has_logged_address_suggestions_count_ = true;
}
}
}
}
-
- // Add the results from AutoComplete. They come back asynchronously, so we
- // hand off what we generated and they will send the results back to the
- // renderer.
- autocomplete_history_manager_.OnGetAutocompleteSuggestions(
- query_id, field.name, field.value, values, labels, icons, unique_ids);
}
void AutofillManager::OnFillAutofillFormData(int query_id,
@@ -864,11 +880,14 @@ std::string AutofillManager::GetAutocheckoutURLPrefix() const {
autofill::autocheckout::WhitelistManager* whitelist_manager =
manager_delegate_->GetAutocheckoutWhitelistManager();
- return whitelist_manager->GetMatchedURLPrefix(web_contents()->GetURL());
+ return whitelist_manager ?
+ whitelist_manager->GetMatchedURLPrefix(web_contents()->GetURL()) :
+ std::string();
}
bool AutofillManager::IsAutofillEnabled() const {
- return manager_delegate_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled);
+ return manager_delegate_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled)
+ && !manager_delegate_->ShouldIgnoreFormData() ;
Ilya Sherman 2013/06/15 00:28:09 nit: The "&&" should go on the previous line.
sgurun-gerrit only 2013/06/17 21:20:32 Done.
}
void AutofillManager::SendAutofillTypePredictions(
@@ -890,6 +909,7 @@ void AutofillManager::SendAutofillTypePredictions(
void AutofillManager::ImportFormData(const FormStructure& submitted_form) {
const CreditCard* imported_credit_card;
+
Ilya Sherman 2013/06/15 00:28:09 nit: Spurious diff.
sgurun-gerrit only 2013/06/17 21:20:32 Done.
if (!personal_data_->ImportFormData(submitted_form, &imported_credit_card))
return;
@@ -1010,9 +1030,13 @@ void AutofillManager::set_metric_logger(const AutofillMetrics* metric_logger) {
}
bool AutofillManager::GetHost(RenderViewHost** host) const {
+
Ilya Sherman 2013/06/15 00:28:09 nit: Spurious diff.
sgurun-gerrit only 2013/06/17 21:20:32 Done.
if (!IsAutofillEnabled())
return false;
+ if (!personal_data_)
+ return false;
+
// No autofill data to return if the profiles are empty.
if (personal_data_->GetProfiles().empty() &&
personal_data_->GetCreditCards().empty()) {

Powered by Google App Engine
This is Rietveld 408576698