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

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

Issue 2839023003: WebView autofill implementation (Closed)
Patch Set: fix coordinates Created 3 years, 7 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/core/browser/autofill_manager.cc
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
index 933b7c5dd41a1549fca6c368a1235d2e756ba4c3..fbed176802e9a7656dc5c7877f6463cf5eee4c92 100644
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -42,6 +42,7 @@
#include "components/autofill/core/browser/autofill_manager_test_delegate.h"
#include "components/autofill/core/browser/autofill_metrics.h"
#include "components/autofill/core/browser/autofill_profile.h"
+#include "components/autofill/core/browser/autofill_provider.h"
#include "components/autofill/core/browser/autofill_type.h"
#include "components/autofill/core/browser/country_names.h"
#include "components/autofill/core/browser/credit_card.h"
@@ -215,7 +216,8 @@ AutofillManager::AutofillManager(
AutofillDriver* driver,
AutofillClient* client,
const std::string& app_locale,
- AutofillDownloadManagerState enable_download_manager)
+ AutofillDownloadManagerState enable_download_manager,
+ AutofillProvider* provider)
: driver_(driver),
client_(client),
payments_client_(base::MakeUnique<payments::PaymentsClient>(
@@ -249,6 +251,7 @@ AutofillManager::AutofillManager(
#if defined(OS_ANDROID) || defined(OS_IOS)
autofill_assistant_(this),
#endif
+ provider_(provider),
weak_ptr_factory_(this) {
if (enable_download_manager == ENABLE_AUTOFILL_DOWNLOAD_MANAGER) {
download_manager_.reset(new AutofillDownloadManager(driver, this));
@@ -367,6 +370,9 @@ void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms,
if (!driver_->RendererIsAvailable())
return;
+ if (provider_)
+ return;
+
bool enabled = IsAutofillEnabled();
if (!has_logged_autofill_enabled_) {
AutofillMetrics::LogIsAutofillEnabledAtPageLoad(enabled);
@@ -388,6 +394,11 @@ bool AutofillManager::OnWillSubmitForm(const FormData& form,
if (!IsValidFormData(form))
return false;
+ if (provider_) {
+ provider_->OnWillSubmitForm(this, form, timestamp);
+ return true;
+ }
+
// We will always give Autocomplete a chance to save the data.
std::unique_ptr<FormStructure> submitted_form = ValidateSubmittedForm(form);
if (!submitted_form) {
@@ -418,6 +429,9 @@ bool AutofillManager::OnFormSubmitted(const FormData& form) {
if (!IsValidFormData(form))
return false;
+ if (provider_)
+ return true;
+
// We will always give Autocomplete a chance to save the data.
std::unique_ptr<FormStructure> submitted_form = ValidateSubmittedForm(form);
if (!submitted_form) {
@@ -512,6 +526,11 @@ void AutofillManager::OnTextFieldDidChange(const FormData& form,
if (!IsValidFormData(form) || !IsValidFormFieldData(field))
return;
+ if (provider_) {
+ provider_->OnTextFieldDidChange(this, form, field, timestamp);
sebsg 2017/05/08 15:38:17 I notice there are a lot of if statements like thi
michaelbai 2017/05/09 00:27:03 We were planing to cherry-pick this patch to M59,
Roger McFarlane (Chromium) 2017/05/10 02:31:54 That generally seems like a good approach. But, y
+ return;
+ }
+
if (test_delegate_)
test_delegate_->OnTextFieldChanged();
@@ -561,6 +580,12 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
gfx::RectF transformed_box =
driver_->TransformBoundingBoxToViewportCoordinates(bounding_box);
+ if (provider_) {
+ provider_->OnQueryFormFieldAutofill(this, query_id, form, field,
+ transformed_box);
+ return;
+ }
+
external_delegate_->OnQuery(query_id, form, field, transformed_box);
// Need to refresh models before using the form_event_loggers.
@@ -810,6 +835,10 @@ void AutofillManager::FillCreditCardForm(int query_id,
}
void AutofillManager::OnFocusNoLongerOnForm() {
+ if (provider_) {
+ provider_->OnFocusNoLongerOnForm(this);
+ return;
+ }
ProcessPendingFormForUpload();
}
@@ -820,6 +849,11 @@ void AutofillManager::OnDidPreviewAutofillFormData() {
void AutofillManager::OnDidFillAutofillFormData(const FormData& form,
const TimeTicks& timestamp) {
+ if (provider_) {
+ provider_->OnDidFillAutofillFormData(this, form, timestamp);
+ return;
+ }
+
if (test_delegate_)
test_delegate_->DidFillFormData();
@@ -863,7 +897,7 @@ void AutofillManager::DidShowSuggestions(bool is_new_popup,
}
void AutofillManager::OnHidePopup() {
- if (!IsAutofillEnabled())
+ if (!IsAutofillEnabled() || provider_)
return;
autocomplete_history_manager_->CancelPendingQuery();
@@ -977,6 +1011,9 @@ void AutofillManager::SetTestDelegate(AutofillManagerTestDelegate* delegate) {
void AutofillManager::OnSetDataList(const std::vector<base::string16>& values,
const std::vector<base::string16>& labels) {
+ if (provider_)
+ return;
+
if (!IsValidString16Vector(values) ||
!IsValidString16Vector(labels) ||
values.size() != labels.size())
@@ -1142,6 +1179,8 @@ void AutofillManager::OnDidGetUploadRiskData(const std::string& risk_data) {
}
void AutofillManager::OnDidEndTextFieldEditing() {
+ if (provider_)
+ return;
external_delegate_->DidEndTextFieldEditing();
}
@@ -1461,6 +1500,8 @@ void AutofillManager::Reset() {
#if defined(OS_ANDROID) || defined(OS_IOS)
autofill_assistant_.Reset();
#endif
+ if (provider_)
+ provider_->Reset(this);
has_logged_autofill_enabled_ = false;
has_logged_address_suggestions_count_ = false;
did_show_suggestions_ = false;
@@ -1723,6 +1764,13 @@ void AutofillManager::FillOrPreviewDataModelForm(
driver_->SendFormDataToRenderer(query_id, action, result);
}
+void AutofillManager::SendFormDataToRenderer(
+ int query_id,
+ AutofillDriver::RendererFormDataAction action,
+ const FormData& data) {
+ driver_->SendFormDataToRenderer(query_id, action, data);
+}
+
std::unique_ptr<FormStructure> AutofillManager::ValidateSubmittedForm(
const FormData& form) {
std::unique_ptr<FormStructure> submitted_form(

Powered by Google App Engine
This is Rietveld 408576698