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

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

Issue 1119004: Integration with Toolbar autofill servers.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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
« no previous file with comments | « chrome/browser/autofill/autofill_manager.h ('k') | chrome/browser/autofill/form_structure.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/autofill_manager.cc
===================================================================
--- chrome/browser/autofill/autofill_manager.cc (revision 42124)
+++ chrome/browser/autofill/autofill_manager.cc (working copy)
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "chrome/browser/autofill/autofill_dialog.h"
#include "chrome/browser/autofill/autofill_infobar_delegate.h"
+#include "chrome/browser/autofill/autofill_xml_parser.h"
#include "chrome/browser/autofill/form_structure.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
@@ -29,12 +30,14 @@
personal_data_ =
tab_contents_->profile()->GetOriginalProfile()->GetPersonalDataManager();
DCHECK(personal_data_);
+ download_manager_.SetObserver(this);
}
AutoFillManager::~AutoFillManager() {
// This is NULL in the MockAutoFillManager.
if (personal_data_)
personal_data_->RemoveObserver(this);
+ download_manager_.SetObserver(NULL);
}
// static
@@ -87,6 +90,14 @@
FormStructure* form_structure = new FormStructure(*iter);
DeterminePossibleFieldTypes(form_structure);
form_structures_.push_back(form_structure);
+ std::string request_xml;
+ if (form_structure->IsAutoFillable() &&
+ form_structure->EncodeUploadRequest(true, true, &request_xml)) {
+ download_manager_.StartRequest(request_xml,
+ form_structure->FormSignature(),
+ true,
+ false);
+ }
}
}
@@ -282,6 +293,48 @@
form_structures_.reset();
}
+void AutoFillManager::OnLoadedAutoFillHeuristics(
+ const std::string& form_signature,
+ const std::string& heuristic_xml) {
+ for (ScopedVector<FormStructure>::iterator it = form_structures_.begin();
+ it != form_structures_.end();
+ ++it) {
+ if ((*it)->FormSignature() == form_signature) {
+ // Create a vector of AutoFillFieldTypes,
+ // to assign the parsed field types to.
+ std::vector<AutoFillFieldType> field_types;
+ UploadRequired upload_required = USE_UPLOAD_RATES;
+
+ // Create a parser.
+ AutoFillQueryXmlParser parse_handler(&field_types, &upload_required);
+ buzz::XmlParser parser(&parse_handler);
+ parser.Parse(heuristic_xml.c_str(), heuristic_xml.length(), true);
+ if (parse_handler.succeeded()) {
+ DCHECK(field_types.size() == (*it)->field_count());
+ if (field_types.size() == (*it)->field_count()) {
+ for (size_t i = 0; i < (*it)->field_count(); ++i) {
+ if (field_types[i] != NO_SERVER_DATA &&
+ field_types[i] != UNKNOWN_TYPE) {
+ FieldTypeSet types = (*it)->field(i)->possible_types();
+ types.insert(field_types[i]);
+ (*it)->set_possible_types(i, types);
+ }
+ }
+ }
+ return;
+ }
+ }
+ }
+}
+
+void AutoFillManager::OnUploadedAutoFillHeuristics(
+ const std::string& form_signature) {
+}
+
+void AutoFillManager::OnHeuristicsRequestError(
+ const std::string& form_signature, int http_error) {
+}
+
void AutoFillManager::DeterminePossibleFieldTypes(
FormStructure* form_structure) {
// TODO(jhawkins): Update field text.
@@ -307,10 +360,15 @@
void AutoFillManager::UploadFormData() {
std::string xml;
- bool ok = upload_form_structure_->EncodeUploadRequest(false, &xml);
+ bool ok = upload_form_structure_->EncodeUploadRequest(false, false, &xml);
DCHECK(ok);
- // TODO(jhawkins): Initiate the upload request thread.
+ // TODO(georgey): enable upload request when we make sure that our data is in
+ // line with toolbar data:
+ // download_manager_.StartRequest(xml,
+ // upload_form_structure_->FormSignature(),
+ // false,
+ // form_is_autofilled);
}
bool AutoFillManager::IsAutoFillEnabled() {
« no previous file with comments | « chrome/browser/autofill/autofill_manager.h ('k') | chrome/browser/autofill/form_structure.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698