Merge from Chromium at DEPS revision r199464

This commit was generated by merge_to_master.py.

Change-Id: Ic3d1f97a4fb4edd1e6ed66a70b5040da1622b5a9
diff --git a/components/OWNERS b/components/OWNERS
index 9bfc438..9fbc5a8 100644
--- a/components/OWNERS
+++ b/components/OWNERS
@@ -7,7 +7,6 @@
 per-file tracing*[email protected]
 per-file tracing*[email protected]
 
-per-file [email protected]
 per-file [email protected]
 per-file [email protected]
 
diff --git a/components/auto_login_parser/auto_login_parser.cc b/components/auto_login_parser/auto_login_parser.cc
index 7ecbfeb..298c9b7 100644
--- a/components/auto_login_parser/auto_login_parser.cc
+++ b/components/auto_login_parser/auto_login_parser.cc
@@ -12,8 +12,7 @@
 #include "net/base/escape.h"
 #include "net/url_request/url_request.h"
 
-namespace components {
-namespace auto_login {
+namespace auto_login_parser {
 
 namespace {
 
@@ -80,5 +79,4 @@
   return ParseHeader(header_string, realm_restriction, header_data);
 }
 
-}  // namespace auto_login
-}  // namespace components
+}  // namespace auto_login_parser
diff --git a/components/auto_login_parser/auto_login_parser.h b/components/auto_login_parser/auto_login_parser.h
index dd60cbc..bd2f28f 100644
--- a/components/auto_login_parser/auto_login_parser.h
+++ b/components/auto_login_parser/auto_login_parser.h
@@ -9,10 +9,9 @@
 
 namespace net {
 class URLRequest;
-}  // namespace net
+}
 
-namespace components {
-namespace auto_login {
+namespace auto_login_parser {
 
 enum RealmRestriction {
   ONLY_GOOGLE_COM,
@@ -46,7 +45,6 @@
                             RealmRestriction realm_restriction,
                             HeaderData* header_data);
 
-}  // namespace auto_login
-}  // namespace components
+}  // namespace auto_login_parser
 
 #endif  // COMPONENTS_AUTO_LOGIN_PARSER_AUTO_LOGIN_PARSER_H_
diff --git a/components/auto_login_parser/auto_login_parser_unittest.cc b/components/auto_login_parser/auto_login_parser_unittest.cc
index 3e990ee..442784c 100644
--- a/components/auto_login_parser/auto_login_parser_unittest.cc
+++ b/components/auto_login_parser/auto_login_parser_unittest.cc
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "components/auto_login_parser/auto_login_parser.h"
+
 #include <string>
 
-#include "components/auto_login_parser/auto_login_parser.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-namespace components {
-namespace auto_login {
+namespace auto_login_parser {
 
 class AutoLoginParserTest : public testing::Test {
  protected:
@@ -89,5 +89,4 @@
   ASSERT_EQ("kfdshfwoeriudslkfsdjfhdskjfhsdkr", header_data.args);
 }
 
-}  // namespace auto_login
-}  // namespace components
+}  // namespace auto_login_parser
diff --git a/components/autofill/browser/autocheckout_manager.cc b/components/autofill/browser/autocheckout_manager.cc
index bb367e8..f451e79 100644
--- a/components/autofill/browser/autocheckout_manager.cc
+++ b/components/autofill/browser/autocheckout_manager.cc
@@ -179,7 +179,7 @@
   host->Send(new AutofillMsg_FillFormsAndClick(
       host->GetRoutingID(),
       filled_forms,
-      *page_meta_data_->proceed_element_descriptor));
+      page_meta_data_->proceed_element_descriptor));
 }
 
 void AutocheckoutManager::OnClickFailed(AutocheckoutStatus status) {
diff --git a/components/autofill/browser/autocheckout_manager_unittest.cc b/components/autofill/browser/autocheckout_manager_unittest.cc
index 8f0d011..f6a1638 100644
--- a/components/autofill/browser/autocheckout_manager_unittest.cc
+++ b/components/autofill/browser/autocheckout_manager_unittest.cc
@@ -131,11 +131,9 @@
   return form_structure.Pass();
 }
 
-scoped_ptr<WebElementDescriptor> CreateProceedElement() {
-  scoped_ptr<WebElementDescriptor> proceed_element(new WebElementDescriptor());
+void PopulateProceedElement(WebElementDescriptor* proceed_element) {
   proceed_element->descriptor = "#foo";
   proceed_element->retrieval_method = WebElementDescriptor::ID;
-  return proceed_element.Pass();
 }
 
 scoped_ptr<AutocheckoutPageMetaData> CreateStartOfFlowMetaData() {
@@ -143,7 +141,7 @@
       new AutocheckoutPageMetaData());
   start_of_flow->current_page_number = 0;
   start_of_flow->total_pages = 3;
-  start_of_flow->proceed_element_descriptor = CreateProceedElement().Pass();
+  PopulateProceedElement(&start_of_flow->proceed_element_descriptor);
   return start_of_flow.Pass();
 }
 
@@ -151,14 +149,14 @@
   scoped_ptr<AutocheckoutPageMetaData> in_flow(new AutocheckoutPageMetaData());
   in_flow->current_page_number = 1;
   in_flow->total_pages = 3;
-  in_flow->proceed_element_descriptor = CreateProceedElement().Pass();
+  PopulateProceedElement(&in_flow->proceed_element_descriptor);
   return in_flow.Pass();
 }
 
 scoped_ptr<AutocheckoutPageMetaData> CreateNotInFlowMetaData() {
   scoped_ptr<AutocheckoutPageMetaData> not_in_flow(
       new AutocheckoutPageMetaData());
-  not_in_flow->proceed_element_descriptor = CreateProceedElement().Pass();
+  PopulateProceedElement(&not_in_flow->proceed_element_descriptor );
   return not_in_flow.Pass();
 }
 
@@ -167,7 +165,7 @@
       new AutocheckoutPageMetaData());
   end_of_flow->current_page_number = 2;
   end_of_flow->total_pages = 3;
-  end_of_flow->proceed_element_descriptor = CreateProceedElement().Pass();
+  PopulateProceedElement(&end_of_flow->proceed_element_descriptor);
   return end_of_flow.Pass();
 }
 
@@ -176,7 +174,7 @@
       new AutocheckoutPageMetaData());
   one_page_flow->current_page_number = 0;
   one_page_flow->total_pages = 1;
-  one_page_flow->proceed_element_descriptor = CreateProceedElement().Pass();
+  PopulateProceedElement(&one_page_flow->proceed_element_descriptor);
   return one_page_flow.Pass();
 }
 
diff --git a/components/autofill/browser/autocheckout_page_meta_data.h b/components/autofill/browser/autocheckout_page_meta_data.h
index 20b0883..f1b9a7a 100644
--- a/components/autofill/browser/autocheckout_page_meta_data.h
+++ b/components/autofill/browser/autocheckout_page_meta_data.h
@@ -5,7 +5,7 @@
 #ifndef COMPONENTS_AUTOFILL_BROWSER_AUTOCHECKOUT_PAGE_META_DATA_H_
 #define COMPONENTS_AUTOFILL_BROWSER_AUTOCHECKOUT_PAGE_META_DATA_H_
 
-#include "base/memory/scoped_ptr.h"
+#include "base/basictypes.h"
 #include "components/autofill/common/web_element_descriptor.h"
 
 namespace autofill {
@@ -36,9 +36,9 @@
   // belong to any autofill flow, it is set to -1.
   int total_pages;
 
-  // The proceed element of the multipage Autofill flow. Can be null if the
-  // current page is the last page of a flow or isn't a member of a flow.
-  scoped_ptr<WebElementDescriptor> proceed_element_descriptor;
+  // The proceed element of the multipage Autofill flow. It can be empty
+  // if current page is the last page of a flow or isn't a member of a flow.
+  WebElementDescriptor proceed_element_descriptor;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(AutocheckoutPageMetaData);
diff --git a/components/autofill/browser/autofill_type.cc b/components/autofill/browser/autofill_type.cc
index c0d2f64..43f6450 100644
--- a/components/autofill/browser/autofill_type.cc
+++ b/components/autofill/browser/autofill_type.cc
@@ -124,6 +124,36 @@
 }
 
 // static
+AutofillFieldType AutofillType::GetEquivalentBillingFieldType(
+    AutofillFieldType field_type) {
+  switch (field_type) {
+    case ADDRESS_HOME_LINE1:
+      return ADDRESS_BILLING_LINE1;
+
+    case ADDRESS_HOME_LINE2:
+      return ADDRESS_BILLING_LINE2;
+
+    case ADDRESS_HOME_APT_NUM:
+      return ADDRESS_BILLING_APT_NUM;
+
+    case ADDRESS_HOME_CITY:
+      return ADDRESS_BILLING_CITY;
+
+    case ADDRESS_HOME_STATE:
+      return ADDRESS_BILLING_STATE;
+
+    case ADDRESS_HOME_ZIP:
+      return ADDRESS_BILLING_ZIP;
+
+    case ADDRESS_HOME_COUNTRY:
+      return ADDRESS_BILLING_COUNTRY;
+
+    default:
+      return field_type;
+  }
+}
+
+// static
 std::string AutofillType::FieldTypeToString(AutofillFieldType type) {
   switch (type) {
     case NO_SERVER_DATA:
diff --git a/components/autofill/browser/autofill_type.h b/components/autofill/browser/autofill_type.h
index 2ae0c6c..f235175 100644
--- a/components/autofill/browser/autofill_type.h
+++ b/components/autofill/browser/autofill_type.h
@@ -41,6 +41,11 @@
   // the returned field type as the first parameter).
   static AutofillFieldType GetEquivalentFieldType(AutofillFieldType field_type);
 
+  // Maps |field_type| to a field type from ADDRESS_BILLING FieldTypeGroup if
+  // field type is an Address type.
+  static AutofillFieldType GetEquivalentBillingFieldType(
+      AutofillFieldType field_type);
+
   // Utilities for serializing and deserializing an |AutofillFieldType|.
   static std::string FieldTypeToString(AutofillFieldType field_type);
   static AutofillFieldType StringToFieldType(const std::string& str);
diff --git a/components/autofill/browser/autofill_xml_parser.cc b/components/autofill/browser/autofill_xml_parser.cc
index 5ac92fd..a467218 100644
--- a/components/autofill/browser/autofill_xml_parser.cc
+++ b/components/autofill/browser/autofill_xml_parser.cc
@@ -8,6 +8,7 @@
 #include <string.h>
 
 #include "base/logging.h"
+#include "components/autofill/browser/autocheckout_page_meta_data.h"
 #include "components/autofill/browser/autofill_server_field_info.h"
 #include "third_party/libjingle/source/talk/xmllite/qname.h"
 
@@ -35,14 +36,15 @@
 AutofillQueryXmlParser::AutofillQueryXmlParser(
     std::vector<AutofillServerFieldInfo>* field_infos,
     UploadRequired* upload_required,
-    std::string* experiment_id)
+    std::string* experiment_id,
+    AutocheckoutPageMetaData* page_meta_data)
     : field_infos_(field_infos),
       upload_required_(upload_required),
-      current_page_number_(-1),
-      total_pages_(-1),
-      experiment_id_(experiment_id) {
+      experiment_id_(experiment_id),
+      page_meta_data_(page_meta_data) {
   DCHECK(upload_required_);
   DCHECK(experiment_id_);
+  DCHECK(page_meta_data_);
 }
 
 AutofillQueryXmlParser::~AutofillQueryXmlParser() {}
@@ -113,9 +115,9 @@
       ++attrs;
       const std::string& attribute_name = attribute_qname.LocalPart();
       if (attribute_name.compare("page_no") == 0)
-        current_page_number_ = GetIntValue(context, *attrs);
+        page_meta_data_->current_page_number = GetIntValue(context, *attrs);
       else if (attribute_name.compare("total_pages") == 0)
-        total_pages_ = GetIntValue(context, *attrs);
+        page_meta_data_->total_pages = GetIntValue(context, *attrs);
       ++attrs;
     }
   } else if (element.compare("page_advance_button") == 0) {
@@ -130,17 +132,17 @@
       ++attrs;
       const std::string& attribute_value = value_qname.LocalPart();
       if (attribute_name.compare("id") == 0 && !attribute_value.empty()) {
-        proceed_element_descriptor_.reset(new autofill::WebElementDescriptor());
-        proceed_element_descriptor_->retrieval_method =
+        page_meta_data_->proceed_element_descriptor.retrieval_method =
             autofill::WebElementDescriptor::ID;
-        proceed_element_descriptor_->descriptor = attribute_value;
+        page_meta_data_->proceed_element_descriptor.descriptor =
+            attribute_value;
         break;
       } else if (attribute_name.compare("css_selector") == 0 &&
                  !attribute_value.empty()) {
-        proceed_element_descriptor_.reset(new autofill::WebElementDescriptor());
-        proceed_element_descriptor_->retrieval_method =
+        page_meta_data_->proceed_element_descriptor.retrieval_method =
             autofill::WebElementDescriptor::CSS_SELECTOR;
-        proceed_element_descriptor_->descriptor = attribute_value;
+        page_meta_data_->proceed_element_descriptor.descriptor =
+            attribute_value;
         break;
       }
     }
diff --git a/components/autofill/browser/autofill_xml_parser.h b/components/autofill/browser/autofill_xml_parser.h
index 69e019c..4d1498f 100644
--- a/components/autofill/browser/autofill_xml_parser.h
+++ b/components/autofill/browser/autofill_xml_parser.h
@@ -14,11 +14,12 @@
 #include "components/autofill/browser/autofill_server_field_info.h"
 #include "components/autofill/browser/field_types.h"
 #include "components/autofill/browser/form_structure.h"
-#include "components/autofill/common/web_element_descriptor.h"
 #include "third_party/libjingle/source/talk/xmllite/xmlparser.h"
 
 namespace autofill {
 
+struct AutocheckoutPageMetaData;
+
 // The base class that contains common functionality between
 // AutofillQueryXmlParser and AutofillUploadXmlParser.
 class AutofillXmlParser : public buzz::XmlParseHandler {
@@ -75,19 +76,10 @@
  public:
   AutofillQueryXmlParser(std::vector<AutofillServerFieldInfo>* field_infos,
                          UploadRequired* upload_required,
-                         std::string* experiment_id);
+                         std::string* experiment_id,
+                         AutocheckoutPageMetaData* page_meta_data);
   virtual ~AutofillQueryXmlParser();
 
-  int current_page_number() const { return current_page_number_; }
-
-  int total_pages() const { return total_pages_; }
-
-  // Returns the proceed element for multipage Autofill flows if the current
-  // page is part of such a flow or NULL otherwise.
-  const autofill::WebElementDescriptor* proceed_element_descriptor() const {
-    return proceed_element_descriptor_.get();
-  }
-
  private:
   // A callback for the beginning of a new <element>, called by Expat.
   // |context| is a parsing context used to resolve element/attribute names.
@@ -110,19 +102,13 @@
   // form is submitted.
   UploadRequired* upload_required_;
 
-  // Page number of present page in multipage autofill flow.
-  int current_page_number_;
-
-  // Total number of pages in multipage autofill flow.
-  int total_pages_;
-
-  // Proceed element for multipage Autofill flow.
-  scoped_ptr<autofill::WebElementDescriptor> proceed_element_descriptor_;
-
   // The server experiment to which this query response belongs.
   // For the default server implementation, this is empty.
   std::string* experiment_id_;
 
+  // Page metadata for multipage autofill flow.
+  AutocheckoutPageMetaData* page_meta_data_;
+
   DISALLOW_COPY_AND_ASSIGN(AutofillQueryXmlParser);
 };
 
diff --git a/components/autofill/browser/autofill_xml_parser_unittest.cc b/components/autofill/browser/autofill_xml_parser_unittest.cc
index 4086475..0da65a2 100644
--- a/components/autofill/browser/autofill_xml_parser_unittest.cc
+++ b/components/autofill/browser/autofill_xml_parser_unittest.cc
@@ -7,6 +7,7 @@
 
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/string_number_conversions.h"
+#include "components/autofill/browser/autocheckout_page_meta_data.h"
 #include "components/autofill/browser/autofill_xml_parser.h"
 #include "components/autofill/browser/field_types.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -15,7 +16,49 @@
 namespace autofill {
 namespace {
 
-TEST(AutofillQueryXmlParserTest, BasicQuery) {
+class AutofillQueryXmlParserTest : public testing::Test {
+ public:
+  AutofillQueryXmlParserTest(): upload_required_(USE_UPLOAD_RATES) {};
+  virtual ~AutofillQueryXmlParserTest() {};
+
+ protected:
+  void ParseQueryXML(const std::string& xml, bool should_succeed) {
+    // Create a parser.
+    AutofillQueryXmlParser parse_handler(&field_infos_,
+                                         &upload_required_,
+                                         &experiment_id_,
+                                         &page_meta_data_);
+    buzz::XmlParser parser(&parse_handler);
+    parser.Parse(xml.c_str(), xml.length(), true);
+    EXPECT_EQ(should_succeed, parse_handler.succeeded());
+  }
+
+  std::vector<AutofillServerFieldInfo> field_infos_;
+  UploadRequired upload_required_;
+  std::string experiment_id_;
+  autofill::AutocheckoutPageMetaData page_meta_data_;
+};
+
+class AutofillUploadXmlParserTest : public testing::Test {
+ public:
+  AutofillUploadXmlParserTest(): positive_(0), negative_(0) {};
+  virtual ~AutofillUploadXmlParserTest() {};
+
+ protected:
+  void ParseUploadXML(const std::string& xml, bool should_succeed) {
+    // Create a parser.
+    AutofillUploadXmlParser parse_handler(&positive_, &negative_);
+    buzz::XmlParser parser(&parse_handler);
+    parser.Parse(xml.c_str(), xml.length(), true);
+
+    EXPECT_EQ(should_succeed, parse_handler.succeeded());
+  }
+
+  double positive_;
+  double negative_;
+};
+
+TEST_F(AutofillQueryXmlParserTest, BasicQuery) {
   // An XML string representing a basic query response.
   std::string xml = "<autofillqueryresponse>"
                     "<field autofilltype=\"0\" />"
@@ -24,124 +67,88 @@
                     "<field autofilltype=\"2\" />"
                     "<field autofilltype=\"61\" defaultvalue=\"default\"/>"
                     "</autofillqueryresponse>";
+  ParseQueryXML(xml, true);
 
-  // Create a vector of AutofillServerFieldInfos, to assign the parsed field
-  // types to.
-  std::vector<AutofillServerFieldInfo> field_infos;
-  UploadRequired upload_required = USE_UPLOAD_RATES;
-  std::string experiment_id;
-
-  // Create a parser.
-  AutofillQueryXmlParser parse_handler(&field_infos, &upload_required,
-                                       &experiment_id);
-  buzz::XmlParser parser(&parse_handler);
-  parser.Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler.succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(5U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(UNKNOWN_TYPE, field_infos[1].field_type);
-  EXPECT_EQ(NAME_FIRST, field_infos[2].field_type);
-  EXPECT_EQ(EMPTY_TYPE, field_infos[3].field_type);
-  EXPECT_EQ("", field_infos[3].default_value);
-  EXPECT_EQ(FIELD_WITH_DEFAULT_VALUE, field_infos[4].field_type);
-  EXPECT_EQ("default", field_infos[4].default_value);
-  EXPECT_EQ(std::string(), experiment_id);
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(5U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_EQ(UNKNOWN_TYPE, field_infos_[1].field_type);
+  EXPECT_EQ(NAME_FIRST, field_infos_[2].field_type);
+  EXPECT_EQ(EMPTY_TYPE, field_infos_[3].field_type);
+  EXPECT_TRUE(field_infos_[3].default_value.empty());
+  EXPECT_EQ(FIELD_WITH_DEFAULT_VALUE, field_infos_[4].field_type);
+  EXPECT_EQ("default", field_infos_[4].default_value);
+  EXPECT_TRUE(experiment_id_.empty());
 }
 
 // Test parsing the upload required attribute.
-TEST(AutofillQueryXmlParserTest, TestUploadRequired) {
-  std::vector<AutofillServerFieldInfo> field_infos;
-  UploadRequired upload_required = USE_UPLOAD_RATES;
-  std::string experiment_id;
-
+TEST_F(AutofillQueryXmlParserTest, TestUploadRequired) {
   std::string xml = "<autofillqueryresponse uploadrequired=\"true\">"
                     "<field autofilltype=\"0\" />"
                     "</autofillqueryresponse>";
 
-  scoped_ptr<AutofillQueryXmlParser> parse_handler(
-      new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                 &experiment_id));
-  scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(UPLOAD_REQUIRED, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  ParseQueryXML(xml, true);
 
-  field_infos.clear();
+  EXPECT_EQ(upload_required_, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
+
+  field_infos_.clear();
   xml = "<autofillqueryresponse uploadrequired=\"false\">"
         "<field autofilltype=\"0\" />"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  ParseQueryXML(xml, true);
 
-  field_infos.clear();
+  EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
+
+  field_infos_.clear();
   xml = "<autofillqueryresponse uploadrequired=\"bad_value\">"
         "<field autofilltype=\"0\" />"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  ParseQueryXML(xml, true);
+
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
 }
 
 // Test parsing the experiment id attribute
-TEST(AutofillQueryXmlParserTest, ParseExperimentId) {
-  std::vector<AutofillServerFieldInfo> field_infos;
-  UploadRequired upload_required = USE_UPLOAD_RATES;
-  std::string experiment_id;
-
+TEST_F(AutofillQueryXmlParserTest, ParseExperimentId) {
   // When the attribute is missing, we should get back the default value -- the
   // empty string.
   std::string xml = "<autofillqueryresponse>"
                     "<field autofilltype=\"0\" />"
                     "</autofillqueryresponse>";
 
-  scoped_ptr<AutofillQueryXmlParser> parse_handler(
-      new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                 &experiment_id));
-  scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  ParseQueryXML(xml, true);
 
-  field_infos.clear();
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
+
+  field_infos_.clear();
 
   // When the attribute is present, make sure we parse it.
   xml = "<autofillqueryresponse experimentid=\"FancyNewAlgorithm\">"
         "<field autofilltype=\"0\" />"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string("FancyNewAlgorithm"), experiment_id);
+  ParseQueryXML(xml, true);
 
-  field_infos.clear();
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_EQ(std::string("FancyNewAlgorithm"), experiment_id_);
+
+  field_infos_.clear();
 
   // Make sure that we can handle parsing both the upload required and the
   // experiment id attribute together.
@@ -150,23 +157,16 @@
         "<field autofilltype=\"0\" />"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string("ServerSmartyPants"), experiment_id);
+  ParseQueryXML(xml, true);
+
+  EXPECT_EQ(UPLOAD_NOT_REQUIRED, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_EQ("ServerSmartyPants", experiment_id_);
 }
 
 // Test XML response with autofill_flow information.
-TEST(AutofillQueryXmlParserTest, ParseAutofillFlow) {
-  std::vector<AutofillServerFieldInfo> field_infos;
-  UploadRequired upload_required = USE_UPLOAD_RATES;
-  std::string experiment_id;
-
+TEST_F(AutofillQueryXmlParserTest, ParseAutofillFlow) {
   std::string xml = "<autofillqueryresponse>"
                     "<field autofilltype=\"55\"/>"
                     "<autofill_flow page_no=\"1\" total_pages=\"10\">"
@@ -174,21 +174,17 @@
                     "</autofill_flow>"
                     "</autofillqueryresponse>";
 
-  scoped_ptr<AutofillQueryXmlParser> parse_handler(
-      new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                 &experiment_id));
-  scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(1U, field_infos.size());
-  EXPECT_EQ(1, parse_handler->current_page_number());
-  EXPECT_EQ(10, parse_handler->total_pages());
-  EXPECT_EQ("foo", parse_handler->proceed_element_descriptor()->descriptor);
-  EXPECT_EQ(autofill::WebElementDescriptor::ID,
-            parse_handler->proceed_element_descriptor()->retrieval_method);
+  ParseQueryXML(xml, true);
 
-  // Clear |field_infos| for the next test;
-  field_infos.clear();
+  EXPECT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(1, page_meta_data_.current_page_number);
+  EXPECT_EQ(10, page_meta_data_.total_pages);
+  EXPECT_EQ("foo", page_meta_data_.proceed_element_descriptor.descriptor);
+  EXPECT_EQ(autofill::WebElementDescriptor::ID,
+            page_meta_data_.proceed_element_descriptor.retrieval_method);
+
+  // Clear |field_infos_| for the next test;
+  field_infos_.clear();
 
   // Test css_selector as page_advance_button.
   xml = "<autofillqueryresponse>"
@@ -198,171 +194,129 @@
         "</autofill_flow>"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos,
-                                                 &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(1U, field_infos.size());
-  EXPECT_EQ(1, parse_handler->current_page_number());
-  EXPECT_EQ(10, parse_handler->total_pages());
-  EXPECT_EQ("[name=\"foo\"]",
-            parse_handler->proceed_element_descriptor()->descriptor);
-  EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
-            parse_handler->proceed_element_descriptor()->retrieval_method);
+  ParseQueryXML(xml, true);
 
-  // Clear |field_infos| for the next test;
-  field_infos.clear();
+  EXPECT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(1, page_meta_data_.current_page_number);
+  EXPECT_EQ(10, page_meta_data_.total_pages);
+  EXPECT_EQ("[name=\"foo\"]",
+            page_meta_data_.proceed_element_descriptor.descriptor);
+  EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
+            page_meta_data_.proceed_element_descriptor.retrieval_method);
+
+  // Clear |field_infos_| for the next test;
+  field_infos_.clear();
 
   // Test first attribute is always the one set.
   xml = "<autofillqueryresponse>"
         "<field autofilltype=\"55\"/>"
         "<autofill_flow page_no=\"1\" total_pages=\"10\">"
         "<page_advance_button css_selector=\"[name=&quot;foo&quot;]\""
-        "   id=\"foo\"/>"
+        " id=\"foo\"/>"
         "</autofill_flow>"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos,
-                                                 &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(1U, field_infos.size());
-  EXPECT_EQ(1, parse_handler->current_page_number());
-  EXPECT_EQ(10, parse_handler->total_pages());
+  ParseQueryXML(xml, true);
+
+  EXPECT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(1, page_meta_data_.current_page_number);
+  EXPECT_EQ(10, page_meta_data_.total_pages);
   EXPECT_EQ("[name=\"foo\"]",
-            parse_handler->proceed_element_descriptor()->descriptor);
+            page_meta_data_.proceed_element_descriptor.descriptor);
   EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
-            parse_handler->proceed_element_descriptor()->retrieval_method);
+            page_meta_data_.proceed_element_descriptor.retrieval_method);
 }
 
 // Test badly formed XML queries.
-TEST(AutofillQueryXmlParserTest, ParseErrors) {
-  std::vector<AutofillServerFieldInfo> field_infos;
-  UploadRequired upload_required = USE_UPLOAD_RATES;
-  std::string experiment_id;
-
+TEST_F(AutofillQueryXmlParserTest, ParseErrors) {
   // Test no Autofill type.
   std::string xml = "<autofillqueryresponse>"
                     "<field/>"
                     "</autofillqueryresponse>";
 
-  scoped_ptr<AutofillQueryXmlParser> parse_handler(
-      new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                 &experiment_id));
-  scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_FALSE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  EXPECT_EQ(0U, field_infos.size());
-  EXPECT_EQ(std::string(), experiment_id);
+  ParseQueryXML(xml, false);
+
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  EXPECT_EQ(0U, field_infos_.size());
+  EXPECT_TRUE(experiment_id_.empty());
 
   // Test an incorrect Autofill type.
   xml = "<autofillqueryresponse>"
         "<field autofilltype=\"-1\"/>"
         "</autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
+  ParseQueryXML(xml, true);
+
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
   // AutofillType was out of range and should be set to NO_SERVER_DATA.
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
 
   // Test upper bound for the field type, MAX_VALID_FIELD_TYPE.
-  field_infos.clear();
+  field_infos_.clear();
   xml = "<autofillqueryresponse><field autofilltype=\"" +
       base::IntToString(MAX_VALID_FIELD_TYPE) + "\"/></autofillqueryresponse>";
 
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
+  ParseQueryXML(xml, true);
+
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
   // AutofillType was out of range and should be set to NO_SERVER_DATA.
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
 
   // Test an incorrect Autofill type.
-  field_infos.clear();
+  field_infos_.clear();
   xml = "<autofillqueryresponse>"
         "<field autofilltype=\"No Type\"/>"
         "</autofillqueryresponse>";
 
-  // Parse fails but an entry is still added to field_infos.
-  parse_handler.reset(new AutofillQueryXmlParser(&field_infos, &upload_required,
-                                                 &experiment_id));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_FALSE(parse_handler->succeeded());
-  EXPECT_EQ(USE_UPLOAD_RATES, upload_required);
-  ASSERT_EQ(1U, field_infos.size());
-  EXPECT_EQ(NO_SERVER_DATA, field_infos[0].field_type);
-  EXPECT_EQ(std::string(), experiment_id);
+  // Parse fails but an entry is still added to field_infos_.
+  ParseQueryXML(xml, false);
+
+  EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
+  ASSERT_EQ(1U, field_infos_.size());
+  EXPECT_EQ(NO_SERVER_DATA, field_infos_[0].field_type);
+  EXPECT_TRUE(experiment_id_.empty());
 }
 
 // Test successfull upload response.
-TEST(AutofillUploadXmlParser, TestSuccessfulResponse) {
-  std::string xml = "<autofilluploadresponse positiveuploadrate=\"0.5\" "
-                    "negativeuploadrate=\"0.3\"/>";
-  double positive = 0;
-  double negative = 0;
-  AutofillUploadXmlParser parse_handler(&positive, &negative);
-  buzz::XmlParser parser(&parse_handler);
-  parser.Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(parse_handler.succeeded());
-  EXPECT_DOUBLE_EQ(0.5, positive);
-  EXPECT_DOUBLE_EQ(0.3, negative);
+TEST_F(AutofillUploadXmlParserTest, TestSuccessfulResponse) {
+  ParseUploadXML("<autofilluploadresponse positiveuploadrate=\"0.5\" "
+                 "negativeuploadrate=\"0.3\"/>",
+                 true);
+
+  EXPECT_DOUBLE_EQ(0.5, positive_);
+  EXPECT_DOUBLE_EQ(0.3, negative_);
 }
 
 // Test failed upload response.
-TEST(AutofillUploadXmlParser, TestFailedResponse) {
-  std::string xml = "<autofilluploadresponse positiveuploadrate=\"\" "
-                    "negativeuploadrate=\"0.3\"/>";
-  double positive = 0;
-  double negative = 0;
-  scoped_ptr<AutofillUploadXmlParser> parse_handler(
-      new AutofillUploadXmlParser(&positive, &negative));
-  scoped_ptr<buzz::XmlParser> parser(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(!parse_handler->succeeded());
-  EXPECT_DOUBLE_EQ(0, positive);
-  EXPECT_DOUBLE_EQ(0.3, negative);  // Partially parsed.
-  negative = 0;
+TEST_F(AutofillUploadXmlParserTest, TestFailedResponse) {
+  ParseUploadXML("<autofilluploadresponse positiveuploadrate=\"\" "
+                 "negativeuploadrate=\"0.3\"/>",
+                 false);
 
-  xml = "<autofilluploadresponse positiveuploadrate=\"0.5\" "
-        "negativeuploadrate=\"0.3\"";
-  parse_handler.reset(new AutofillUploadXmlParser(&positive, &negative));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(!parse_handler->succeeded());
-  EXPECT_DOUBLE_EQ(0, positive);
-  EXPECT_DOUBLE_EQ(0, negative);
+  EXPECT_DOUBLE_EQ(0, positive_);
+  EXPECT_DOUBLE_EQ(0.3, negative_);  // Partially parsed.
+  negative_ = 0;
 
-  xml = "bad data";
-  parse_handler.reset(new AutofillUploadXmlParser(&positive, &negative));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(!parse_handler->succeeded());
-  EXPECT_DOUBLE_EQ(0, positive);
-  EXPECT_DOUBLE_EQ(0, negative);
+  ParseUploadXML("<autofilluploadresponse positiveuploadrate=\"0.5\" "
+                 "negativeuploadrate=\"0.3\"",
+                 false);
 
-  xml = "";
-  parse_handler.reset(new AutofillUploadXmlParser(&positive, &negative));
-  parser.reset(new buzz::XmlParser(parse_handler.get()));
-  parser->Parse(xml.c_str(), xml.length(), true);
-  EXPECT_TRUE(!parse_handler->succeeded());
-  EXPECT_DOUBLE_EQ(0, positive);
-  EXPECT_DOUBLE_EQ(0, negative);
+  EXPECT_DOUBLE_EQ(0, positive_);
+  EXPECT_DOUBLE_EQ(0, negative_);
+
+  ParseUploadXML("bad data", false);
+
+  EXPECT_DOUBLE_EQ(0, positive_);
+  EXPECT_DOUBLE_EQ(0, negative_);
+
+  ParseUploadXML(std::string(), false);
+
+  EXPECT_DOUBLE_EQ(0, positive_);
+  EXPECT_DOUBLE_EQ(0, negative_);
 }
 
 }  // namespace
diff --git a/components/autofill/browser/form_structure.cc b/components/autofill/browser/form_structure.cc
index 136d997..cec92b0 100644
--- a/components/autofill/browser/form_structure.cc
+++ b/components/autofill/browser/form_structure.cc
@@ -56,6 +56,8 @@
 const char kXMLElementField[] = "field";
 const char kXMLElementFields[] = "fields";
 const char kXMLElementForm[] = "form";
+const char kBillingSection[] = "billing";
+const char kShippingSection[] = "shipping";
 
 // Helper for |EncodeUploadRequest()| that creates a bit field corresponding to
 // |available_field_types| and returns the hex representation as a string.
@@ -532,24 +534,15 @@
   std::vector<AutofillServerFieldInfo> field_infos;
   UploadRequired upload_required;
   std::string experiment_id;
-  AutofillQueryXmlParser parse_handler(&field_infos, &upload_required,
-                                       &experiment_id);
+  AutofillQueryXmlParser parse_handler(&field_infos,
+                                       &upload_required,
+                                       &experiment_id,
+                                       page_meta_data);
   buzz::XmlParser parser(&parse_handler);
   parser.Parse(response_xml.c_str(), response_xml.length(), true);
   if (!parse_handler.succeeded())
     return;
 
-  page_meta_data->current_page_number = parse_handler.current_page_number();
-  page_meta_data->total_pages = parse_handler.total_pages();
-  if (parse_handler.proceed_element_descriptor()) {
-    page_meta_data->proceed_element_descriptor.reset(
-        new autofill::WebElementDescriptor(
-            *parse_handler.proceed_element_descriptor()));
-  } else {
-    page_meta_data->proceed_element_descriptor.reset(
-        new autofill::WebElementDescriptor());
-  }
-
   metric_logger.LogServerQueryMetric(AutofillMetrics::QUERY_RESPONSE_PARSED);
   metric_logger.LogServerExperimentIdForQuery(experiment_id);
 
@@ -1123,7 +1116,11 @@
     DCHECK_EQ(kDefaultSection, field->section());
     std::string section = field->section();
     if (!tokens.empty() &&
-        (tokens.back() == "shipping" || tokens.back() == "billing")) {
+        (tokens.back() == kShippingSection ||
+         tokens.back() == kBillingSection)) {
+      // Set Autofill field type to billing if section is billing.
+      if (tokens.back() == kBillingSection)
+        field_type = AutofillType::GetEquivalentBillingFieldType(field_type);
       section = "-" + tokens.back();
       tokens.pop_back();
     }
diff --git a/components/autofill/browser/wallet/wallet_address.cc b/components/autofill/browser/wallet/wallet_address.cc
index 196b078..d15c7ac 100644
--- a/components/autofill/browser/wallet/wallet_address.cc
+++ b/components/autofill/browser/wallet/wallet_address.cc
@@ -236,7 +236,7 @@
 
 string16 Address::GetInfo(AutofillFieldType type,
                           const std::string& app_locale) const {
-  switch (type) {
+  switch (AutofillType::GetEquivalentFieldType(type)) {
     case NAME_FULL:
       return recipient_name();
 
diff --git a/components/autofill/browser/wallet/wallet_client_unittest.cc b/components/autofill/browser/wallet/wallet_client_unittest.cc
index 867f3a0..8ceb029 100644
--- a/components/autofill/browser/wallet/wallet_client_unittest.cc
+++ b/components/autofill/browser/wallet/wallet_client_unittest.cc
@@ -737,6 +737,15 @@
     return data;
   }
 
+  void DoEncryptionOrEscrowRequest(net::HttpStatusCode response_code,
+                                   const std::string& response_body) {
+    net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
+    ASSERT_TRUE(encryption_fetcher);
+    encryption_fetcher->set_response_code(response_code);
+    encryption_fetcher->SetResponseString(response_body);
+    encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  }
+
   void VerifyAndFinishRequest(net::HttpStatusCode response_code,
                               const std::string& request_body,
                               const std::string& response_body) {
@@ -751,12 +760,12 @@
  protected:
   scoped_ptr<WalletClient> wallet_client_;
   MockWalletClientDelegate delegate_;
-  net::TestURLFetcherFactory factory_;
 
  private:
   // The profile's request context must be released on the IO thread.
   content::TestBrowserThread io_thread_;
   TestingProfile profile_;
+  net::TestURLFetcherFactory factory_;
 };
 
 TEST_F(WalletClientTest, WalletError) {
@@ -796,12 +805,12 @@
   delegate_.ExpectBaselineMetrics(NO_ESCROW_REQUEST, HAS_WALLET_REQUEST);
   delegate_.ExpectWalletErrorMetric(AutofillMetrics::WALLET_NETWORK_ERROR);
 
-  wallet_client_->SendAutocheckoutStatus(
-      autofill::SUCCESS, GURL(kMerchantUrl), std::string());
-  net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
-  ASSERT_TRUE(fetcher);
-  fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
-  fetcher->delegate()->OnURLFetchComplete(fetcher);
+  wallet_client_->SendAutocheckoutStatus(autofill::SUCCESS,
+                                         GURL(kMerchantUrl),
+                                         "google_transaction_id");
+  VerifyAndFinishRequest(net::HTTP_UNAUTHORIZED,
+                         kSendAutocheckoutStatusOfSuccessValidRequest,
+                         std::string());
 }
 
 TEST_F(WalletClientTest, NetworkFailureOnExpectedResponse) {
@@ -812,10 +821,9 @@
   delegate_.ExpectWalletErrorMetric(AutofillMetrics::WALLET_NETWORK_ERROR);
 
   wallet_client_->GetWalletItems(GURL(kMerchantUrl));
-  net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
-  ASSERT_TRUE(fetcher);
-  fetcher->set_response_code(net::HTTP_UNAUTHORIZED);
-  fetcher->delegate()->OnURLFetchComplete(fetcher);
+  VerifyAndFinishRequest(net::HTTP_UNAUTHORIZED,
+                         kGetWalletItemsValidRequest,
+                         std::string());
 }
 
 TEST_F(WalletClientTest, RequestError) {
@@ -824,12 +832,12 @@
   delegate_.ExpectBaselineMetrics(NO_ESCROW_REQUEST, HAS_WALLET_REQUEST);
   delegate_.ExpectWalletErrorMetric(AutofillMetrics::WALLET_BAD_REQUEST);
 
-  wallet_client_->SendAutocheckoutStatus(
-      autofill::SUCCESS, GURL(kMerchantUrl), std::string());
-  net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
-  ASSERT_TRUE(fetcher);
-  fetcher->set_response_code(net::HTTP_BAD_REQUEST);
-  fetcher->delegate()->OnURLFetchComplete(fetcher);
+  wallet_client_->SendAutocheckoutStatus(autofill::SUCCESS,
+                                         GURL(kMerchantUrl),
+                                         "google_transaction_id");
+  VerifyAndFinishRequest(net::HTTP_BAD_REQUEST,
+                         kSendAutocheckoutStatusOfSuccessValidRequest,
+                         std::string());
 }
 
 TEST_F(WalletClientTest, GetFullWalletSuccess) {
@@ -846,12 +854,8 @@
       std::vector<WalletClient::RiskCapability>());
   wallet_client_->GetFullWallet(full_wallet_request);
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString(
-      "session_material|encrypted_one_time_pad");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK,
+                              "session_material|encrypted_one_time_pad");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kGetFullWalletValidRequest,
@@ -875,12 +879,8 @@
       risk_capabilities);
   wallet_client_->GetFullWallet(full_wallet_request);
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString(
-      "session_material|encrypted_one_time_pad");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK,
+                              "session_material|encrypted_one_time_pad");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kGetFullWalletWithRiskCapabilitesValidRequest,
@@ -905,11 +905,7 @@
       std::vector<WalletClient::RiskCapability>());
   wallet_client_->GetFullWallet(full_wallet_request);
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
-  encryption_fetcher->SetResponseString(std::string());
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_INTERNAL_SERVER_ERROR, std::string());
 
   EXPECT_EQ(0U, delegate_.full_wallets_received());
 }
@@ -930,12 +926,8 @@
       std::vector<WalletClient::RiskCapability>());
   wallet_client_->GetFullWallet(full_wallet_request);
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString(
-      "session_material:encrypted_one_time_pad");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK,
+                              "session_material:encrypted_one_time_pad");
 
   EXPECT_EQ(0U, delegate_.full_wallets_received());
 }
@@ -956,12 +948,8 @@
       std::vector<WalletClient::RiskCapability>());
   wallet_client_->GetFullWallet(full_wallet_request);
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString(
-      "session_material|encrypted_one_time_pad");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK,
+                              "session_material|encrypted_one_time_pad");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kGetFullWalletValidRequest,
@@ -991,12 +979,9 @@
   wallet_client_->AcceptLegalDocuments(docs.get(),
                                        kGoogleTransactionId,
                                        GURL(kMerchantUrl));
-  net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
-  ASSERT_TRUE(fetcher);
-  EXPECT_EQ(kAcceptLegalDocumentsValidRequest, GetData(fetcher));
-  fetcher->SetResponseString(")]}'");  // Invalid JSON. Should be ignored.
-  fetcher->set_response_code(net::HTTP_OK);
-  fetcher->delegate()->OnURLFetchComplete(fetcher);
+  VerifyAndFinishRequest(net::HTTP_OK,
+                         kAcceptLegalDocumentsValidRequest,
+                         ")}'");  // Invalid JSON. Should be ignored.
 }
 
 TEST_F(WalletClientTest, AuthenticateInstrumentSucceeded) {
@@ -1010,11 +995,7 @@
                                          "cvv",
                                          "obfuscated_gaia_id");
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kAuthenticateInstrumentValidRequest,
@@ -1032,11 +1013,7 @@
                                          "cvv",
                                          "obfuscated_gaia_id");
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kAuthenticateInstrumentValidRequest,
@@ -1056,10 +1033,7 @@
                                          "cvv",
                                          "obfuscated_gaia_id");
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_INTERNAL_SERVER_ERROR, std::string());
 }
 
 TEST_F(WalletClientTest, AuthenticateInstrumentEscrowMalformed) {
@@ -1074,10 +1048,7 @@
                                          "cvv",
                                          "obfuscated_gaia_id");
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, std::string());
 }
 
 TEST_F(WalletClientTest, AuthenticateInstrumentFailedMalformedResponse) {
@@ -1092,11 +1063,7 @@
                                          "cvv",
                                          "obfuscated_gaia_id");
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kAuthenticateInstrumentValidRequest,
@@ -1193,11 +1160,7 @@
                                  "obfuscated_gaia_id",
                                  GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentValidRequest,
@@ -1225,11 +1188,7 @@
                                  "obfuscated_gaia_id",
                                  GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentValidRequest,
@@ -1248,11 +1207,7 @@
                                  "obfuscated_gaia_id",
                                  GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentValidRequest,
@@ -1271,11 +1226,7 @@
                                  "obfuscated_gaia_id",
                                  GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
-  encryption_fetcher->SetResponseString(std::string());
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_INTERNAL_SERVER_ERROR, std::string());
 }
 
 TEST_F(WalletClientTest, SaveInstrumentEscrowMalformed) {
@@ -1289,11 +1240,7 @@
                                  "obfuscated_gaia_id",
                                  GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString(std::string());
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, std::string());
 }
 
 TEST_F(WalletClientTest, SaveInstrumentFailedMalformedResponse) {
@@ -1307,11 +1254,7 @@
                                  "obfuscated_gaia_id",
                                  GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentValidRequest,
@@ -1336,11 +1279,7 @@
                                            "obfuscated_gaia_id",
                                            GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentAndAddressValidRequest,
                          kSaveInstrumentAndAddressValidResponse);
@@ -1373,11 +1312,7 @@
                                            "obfuscated_gaia_id",
                                            GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
   VerifyAndFinishRequest(
       net::HTTP_OK,
       kSaveInstrumentAndAddressValidRequest,
@@ -1399,11 +1334,7 @@
                                            "obfuscated_gaia_id",
                                          GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentAndAddressValidRequest,
@@ -1426,11 +1357,7 @@
                                            "obfuscated_gaia_id",
                                            GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
-  encryption_fetcher->SetResponseString(std::string());
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_INTERNAL_SERVER_ERROR, std::string());
 }
 
 TEST_F(WalletClientTest, SaveInstrumentAndAddressEscrowMalformed) {
@@ -1448,11 +1375,7 @@
                                            "obfuscated_gaia_id",
                                            GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString(std::string());
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, std::string());
 }
 
 TEST_F(WalletClientTest, SaveInstrumentAndAddressFailedAddressMissing) {
@@ -1470,11 +1393,7 @@
                                            "obfuscated_gaia_id",
                                            GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentAndAddressValidRequest,
@@ -1496,11 +1415,7 @@
                                            "obfuscated_gaia_id",
                                            GURL(kMerchantUrl));
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kSaveInstrumentAndAddressValidRequest,
@@ -1615,11 +1530,7 @@
   wallet_client_->UpdateInstrument(update_instrument_request,
                                    scoped_ptr<Address>());
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kUpdateInstrumentExpirationDateValidRequest,
@@ -1643,11 +1554,7 @@
 
   wallet_client_->UpdateInstrument(update_instrument_request, GetTestAddress());
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kUpdateInstrumentAddressWithNameChangeValidRequest,
@@ -1672,11 +1579,7 @@
   update_instrument_request.obfuscated_gaia_id = "obfuscated_gaia_id";
   wallet_client_->UpdateInstrument(update_instrument_request, GetTestAddress());
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_OK);
-  encryption_fetcher->SetResponseString("escrow_handle");
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_OK, "escrow_handle");
 
   VerifyAndFinishRequest(net::HTTP_OK,
                          kUpdateInstrumentAddressAndExpirationDateValidRequest,
@@ -1746,11 +1649,7 @@
 
   wallet_client_->UpdateInstrument(update_instrument_request, GetTestAddress());
 
-  net::TestURLFetcher* encryption_fetcher = factory_.GetFetcherByID(1);
-  ASSERT_TRUE(encryption_fetcher);
-  encryption_fetcher->set_response_code(net::HTTP_INTERNAL_SERVER_ERROR);
-  encryption_fetcher->SetResponseString(std::string());
-  encryption_fetcher->delegate()->OnURLFetchComplete(encryption_fetcher);
+  DoEncryptionOrEscrowRequest(net::HTTP_INTERNAL_SERVER_ERROR, std::string());
 }
 
 TEST_F(WalletClientTest, UpdateInstrumentMalformedResponse) {
diff --git a/components/autofill/browser/webdata/autofill_table.cc b/components/autofill/browser/webdata/autofill_table.cc
index a9c7367..99eeeb4 100644
--- a/components/autofill/browser/webdata/autofill_table.cc
+++ b/components/autofill/browser/webdata/autofill_table.cc
@@ -463,6 +463,16 @@
   return s.Succeeded();
 }
 
+bool AutofillTable::HasFormElements() {
+  sql::Statement s(db_->GetUniqueStatement(
+      "SELECT COUNT(*) FROM autofill"));
+  if (!s.Step()) {
+    NOTREACHED();
+    return false;
+  }
+  return s.ColumnInt(0) > 0;
+}
+
 bool AutofillTable::RemoveFormElementsAddedBetween(
     const Time& delete_begin,
     const Time& delete_end,
diff --git a/components/autofill/browser/webdata/autofill_table.h b/components/autofill/browser/webdata/autofill_table.h
index f86302f..0ff0c8f 100644
--- a/components/autofill/browser/webdata/autofill_table.h
+++ b/components/autofill/browser/webdata/autofill_table.h
@@ -154,6 +154,9 @@
                                    std::vector<base::string16>* values,
                                    int limit);
 
+  // Returns whether any form elements are stored in the database.
+  bool HasFormElements();
+
   // Removes rows from autofill_dates if they were created on or after
   // |delete_begin| and strictly before |delete_end|.  Decrements the
   // count of the corresponding rows in the autofill table, and
diff --git a/components/autofill/browser/webdata/autofill_table_unittest.cc b/components/autofill/browser/webdata/autofill_table_unittest.cc
index b4f3264..575ece2 100644
--- a/components/autofill/browser/webdata/autofill_table_unittest.cc
+++ b/components/autofill/browser/webdata/autofill_table_unittest.cc
@@ -140,7 +140,9 @@
   field.value = ASCIIToUTF16("Superman");
   base::Time now = base::Time::Now();
   base::TimeDelta two_seconds = base::TimeDelta::FromSeconds(2);
+  EXPECT_FALSE(table_->HasFormElements());
   EXPECT_TRUE(table_->AddFormFieldValue(field, &changes));
+  EXPECT_TRUE(table_->HasFormElements());
   std::vector<base::string16> v;
   for (int i = 0; i < 5; i++) {
     field.value = ASCIIToUTF16("Clark Kent");
diff --git a/components/autofill/browser/webdata/autofill_webdata.h b/components/autofill/browser/webdata/autofill_webdata.h
index 032649b..66f42f8 100644
--- a/components/autofill/browser/webdata/autofill_webdata.h
+++ b/components/autofill/browser/webdata/autofill_webdata.h
@@ -41,6 +41,10 @@
       int limit,
       WebDataServiceConsumer* consumer) = 0;
 
+  // Checks if there are any form elements in the database.
+  virtual WebDataServiceBase::Handle HasFormElements(
+      WebDataServiceConsumer* consumer) = 0;
+
   // Removes form elements recorded for Autocomplete from the database.
   virtual void RemoveFormElementsAddedBetween(
       const base::Time& delete_begin, const base::Time& delete_end) = 0;
diff --git a/components/autofill/browser/webdata/autofill_webdata_backend.cc b/components/autofill/browser/webdata/autofill_webdata_backend.cc
index 0cda3d1..e8c5fd8 100644
--- a/components/autofill/browser/webdata/autofill_webdata_backend.cc
+++ b/components/autofill/browser/webdata/autofill_webdata_backend.cc
@@ -72,6 +72,14 @@
                                                  values));
 }
 
+scoped_ptr<WDTypedResult> AutofillWebDataBackend::HasFormElements(
+    WebDatabase* db) {
+  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
+  bool value = AutofillTable::FromWebDatabase(db)->HasFormElements();
+  return scoped_ptr<WDTypedResult>(
+      new WDResult<bool>(AUTOFILL_VALUE_RESULT, value));
+}
+
 WebDatabase::State AutofillWebDataBackend::RemoveFormElementsAddedBetween(
     const base::Time& delete_begin, const base::Time& delete_end,
     WebDatabase* db) {
diff --git a/components/autofill/browser/webdata/autofill_webdata_backend.h b/components/autofill/browser/webdata/autofill_webdata_backend.h
index b1ab6d6..3ab841e 100644
--- a/components/autofill/browser/webdata/autofill_webdata_backend.h
+++ b/components/autofill/browser/webdata/autofill_webdata_backend.h
@@ -44,6 +44,9 @@
       int limit,
       WebDatabase* db);
 
+  // Returns true if there are any elements in the form.
+  scoped_ptr<WDTypedResult> HasFormElements(WebDatabase* db);
+
   // Removes form elements recorded for Autocomplete from the database.
   WebDatabase::State RemoveFormElementsAddedBetween(
       const base::Time& delete_begin,
diff --git a/components/autofill/browser/webdata/autofill_webdata_service.cc b/components/autofill/browser/webdata/autofill_webdata_service.cc
index 217f265..1f7e158 100644
--- a/components/autofill/browser/webdata/autofill_webdata_service.cc
+++ b/components/autofill/browser/webdata/autofill_webdata_service.cc
@@ -72,6 +72,13 @@
            autofill_backend_, name, prefix, limit), consumer);
 }
 
+WebDataServiceBase::Handle AutofillWebDataService::HasFormElements(
+    WebDataServiceConsumer* consumer) {
+  return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
+      Bind(&AutofillWebDataBackend::HasFormElements, autofill_backend_),
+      consumer);
+}
+
 void AutofillWebDataService::RemoveFormElementsAddedBetween(
     const Time& delete_begin, const Time& delete_end) {
   wdbs_->ScheduleDBTask(FROM_HERE,
diff --git a/components/autofill/browser/webdata/autofill_webdata_service.h b/components/autofill/browser/webdata/autofill_webdata_service.h
index 87b967c..2ca80ef 100644
--- a/components/autofill/browser/webdata/autofill_webdata_service.h
+++ b/components/autofill/browser/webdata/autofill_webdata_service.h
@@ -65,6 +65,9 @@
       const base::string16& prefix,
       int limit,
       WebDataServiceConsumer* consumer) OVERRIDE;
+
+  virtual WebDataServiceBase::Handle HasFormElements(
+      WebDataServiceConsumer* consumer) OVERRIDE;
   virtual void RemoveFormElementsAddedBetween(
       const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE;
   virtual void RemoveExpiredFormElements() OVERRIDE;
diff --git a/components/autofill_browser.target.darwin-arm.mk b/components/autofill_browser.target.darwin-arm.mk
new file mode 100644
index 0000000..9922a3a
--- /dev/null
+++ b/components/autofill_browser.target.darwin-arm.mk
@@ -0,0 +1,268 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_browser_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,GYP,components_autofill_regexes_gyp)/autofill_regexes.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,components_autofill_risk_proto_gyp)/components_autofill_risk_proto_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+	$(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
+	$(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/autofill_regex_constants.cc: $(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/autofill_regex_constants.cc
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/address.cc \
+	components/autofill/browser/address_field.cc \
+	components/autofill/browser/autocheckout/whitelist_manager.cc \
+	components/autofill/browser/autocheckout_manager.cc \
+	components/autofill/browser/autocheckout_page_meta_data.cc \
+	components/autofill/browser/autocheckout_request_manager.cc \
+	components/autofill/browser/autocomplete_history_manager.cc \
+	components/autofill/browser/autofill_country.cc \
+	components/autofill/browser/autofill_data_model.cc \
+	components/autofill/browser/autofill_download.cc \
+	components/autofill/browser/autofill_download_url.cc \
+	components/autofill/browser/autofill_external_delegate.cc \
+	components/autofill/browser/autofill_field.cc \
+	components/autofill/browser/autofill_manager.cc \
+	components/autofill/browser/autofill_metrics.cc \
+	components/autofill/browser/autofill_profile.cc \
+	components/autofill/browser/autofill_regexes.cc \
+	components/autofill/browser/autofill_scanner.cc \
+	components/autofill/browser/autofill_type.cc \
+	components/autofill/browser/autofill_xml_parser.cc \
+	components/autofill/browser/contact_info.cc \
+	components/autofill/browser/credit_card.cc \
+	components/autofill/browser/credit_card_field.cc \
+	components/autofill/browser/email_field.cc \
+	components/autofill/browser/form_field.cc \
+	components/autofill/browser/form_group.cc \
+	components/autofill/browser/form_structure.cc \
+	components/autofill/browser/name_field.cc \
+	components/autofill/browser/password_autofill_manager.cc \
+	components/autofill/browser/password_generator.cc \
+	components/autofill/browser/personal_data_manager.cc \
+	components/autofill/browser/phone_field.cc \
+	components/autofill/browser/phone_number.cc \
+	components/autofill/browser/phone_number_i18n.cc \
+	components/autofill/browser/risk/fingerprint.cc \
+	components/autofill/browser/state_names.cc \
+	components/autofill/browser/validation.cc \
+	components/autofill/browser/wallet/cart.cc \
+	components/autofill/browser/wallet/encryption_escrow_client.cc \
+	components/autofill/browser/wallet/full_wallet.cc \
+	components/autofill/browser/wallet/instrument.cc \
+	components/autofill/browser/wallet/required_action.cc \
+	components/autofill/browser/wallet/wallet_address.cc \
+	components/autofill/browser/wallet/wallet_client.cc \
+	components/autofill/browser/wallet/wallet_items.cc \
+	components/autofill/browser/wallet/wallet_service_url.cc \
+	components/autofill/browser/wallet/wallet_signin_helper.cc \
+	components/autofill/browser/webdata/autofill_change.cc \
+	components/autofill/browser/webdata/autofill_entry.cc \
+	components/autofill/browser/webdata/autofill_table.cc \
+	components/autofill/browser/webdata/autofill_webdata_backend.cc \
+	components/autofill/browser/webdata/autofill_webdata_service.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-DFEATURE_ENABLE_SSL' \
+	'-DFEATURE_ENABLE_VOICEMAIL' \
+	'-DEXPAT_RELATIVE_PATH' \
+	'-DGTEST_RELATIVE_PATH' \
+	'-DJSONCPP_RELATIVE_PATH' \
+	'-DNO_MAIN_THREAD_WRAPPING' \
+	'-DNO_SOUND_SYSTEM' \
+	'-DANDROID' \
+	'-DPOSIX' \
+	'-DPOSIX_AVOID_MMAP' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/libjingle/overrides \
+	$(LOCAL_PATH)/third_party/libjingle/source \
+	$(LOCAL_PATH)/testing/gtest/include \
+	$(LOCAL_PATH)/third_party \
+	$(LOCAL_PATH)/third_party/webrtc \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/expat/lib \
+	$(LOCAL_PATH)/third_party/jsoncpp/overrides/include \
+	$(LOCAL_PATH)/third_party/jsoncpp/source/include \
+	$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
+	$(LOCAL_PATH)/third_party/libphonenumber/src \
+	$(gyp_shared_intermediate_dir)/webkit \
+	$(gyp_shared_intermediate_dir)/chrome \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	components_autofill_risk_proto_gyp \
+	skia_skia_gyp \
+	third_party_libphonenumber_libphonenumber_without_metadata_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_browser_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_browser
+autofill_browser: components_autofill_browser_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_browser.target.darwin-x86.mk b/components/autofill_browser.target.darwin-x86.mk
new file mode 100644
index 0000000..67df852
--- /dev/null
+++ b/components/autofill_browser.target.darwin-x86.mk
@@ -0,0 +1,266 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_browser_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,GYP,components_autofill_regexes_gyp)/autofill_regexes.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,components_autofill_risk_proto_gyp)/components_autofill_risk_proto_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+	$(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
+	$(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/autofill_regex_constants.cc: $(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/autofill_regex_constants.cc
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/address.cc \
+	components/autofill/browser/address_field.cc \
+	components/autofill/browser/autocheckout/whitelist_manager.cc \
+	components/autofill/browser/autocheckout_manager.cc \
+	components/autofill/browser/autocheckout_page_meta_data.cc \
+	components/autofill/browser/autocheckout_request_manager.cc \
+	components/autofill/browser/autocomplete_history_manager.cc \
+	components/autofill/browser/autofill_country.cc \
+	components/autofill/browser/autofill_data_model.cc \
+	components/autofill/browser/autofill_download.cc \
+	components/autofill/browser/autofill_download_url.cc \
+	components/autofill/browser/autofill_external_delegate.cc \
+	components/autofill/browser/autofill_field.cc \
+	components/autofill/browser/autofill_manager.cc \
+	components/autofill/browser/autofill_metrics.cc \
+	components/autofill/browser/autofill_profile.cc \
+	components/autofill/browser/autofill_regexes.cc \
+	components/autofill/browser/autofill_scanner.cc \
+	components/autofill/browser/autofill_type.cc \
+	components/autofill/browser/autofill_xml_parser.cc \
+	components/autofill/browser/contact_info.cc \
+	components/autofill/browser/credit_card.cc \
+	components/autofill/browser/credit_card_field.cc \
+	components/autofill/browser/email_field.cc \
+	components/autofill/browser/form_field.cc \
+	components/autofill/browser/form_group.cc \
+	components/autofill/browser/form_structure.cc \
+	components/autofill/browser/name_field.cc \
+	components/autofill/browser/password_autofill_manager.cc \
+	components/autofill/browser/password_generator.cc \
+	components/autofill/browser/personal_data_manager.cc \
+	components/autofill/browser/phone_field.cc \
+	components/autofill/browser/phone_number.cc \
+	components/autofill/browser/phone_number_i18n.cc \
+	components/autofill/browser/risk/fingerprint.cc \
+	components/autofill/browser/state_names.cc \
+	components/autofill/browser/validation.cc \
+	components/autofill/browser/wallet/cart.cc \
+	components/autofill/browser/wallet/encryption_escrow_client.cc \
+	components/autofill/browser/wallet/full_wallet.cc \
+	components/autofill/browser/wallet/instrument.cc \
+	components/autofill/browser/wallet/required_action.cc \
+	components/autofill/browser/wallet/wallet_address.cc \
+	components/autofill/browser/wallet/wallet_client.cc \
+	components/autofill/browser/wallet/wallet_items.cc \
+	components/autofill/browser/wallet/wallet_service_url.cc \
+	components/autofill/browser/wallet/wallet_signin_helper.cc \
+	components/autofill/browser/webdata/autofill_change.cc \
+	components/autofill/browser/webdata/autofill_entry.cc \
+	components/autofill/browser/webdata/autofill_table.cc \
+	components/autofill/browser/webdata/autofill_webdata_backend.cc \
+	components/autofill/browser/webdata/autofill_webdata_service.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-DFEATURE_ENABLE_SSL' \
+	'-DFEATURE_ENABLE_VOICEMAIL' \
+	'-DEXPAT_RELATIVE_PATH' \
+	'-DGTEST_RELATIVE_PATH' \
+	'-DJSONCPP_RELATIVE_PATH' \
+	'-DNO_MAIN_THREAD_WRAPPING' \
+	'-DNO_SOUND_SYSTEM' \
+	'-DANDROID' \
+	'-DPOSIX' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/libjingle/overrides \
+	$(LOCAL_PATH)/third_party/libjingle/source \
+	$(LOCAL_PATH)/testing/gtest/include \
+	$(LOCAL_PATH)/third_party \
+	$(LOCAL_PATH)/third_party/webrtc \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/expat/lib \
+	$(LOCAL_PATH)/third_party/jsoncpp/overrides/include \
+	$(LOCAL_PATH)/third_party/jsoncpp/source/include \
+	$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
+	$(LOCAL_PATH)/third_party/libphonenumber/src \
+	$(gyp_shared_intermediate_dir)/webkit \
+	$(gyp_shared_intermediate_dir)/chrome \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	components_autofill_risk_proto_gyp \
+	skia_skia_gyp \
+	third_party_libphonenumber_libphonenumber_without_metadata_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_browser_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_browser
+autofill_browser: components_autofill_browser_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_browser.target.linux-arm.mk b/components/autofill_browser.target.linux-arm.mk
new file mode 100644
index 0000000..9922a3a
--- /dev/null
+++ b/components/autofill_browser.target.linux-arm.mk
@@ -0,0 +1,268 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_browser_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,GYP,components_autofill_regexes_gyp)/autofill_regexes.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,components_autofill_risk_proto_gyp)/components_autofill_risk_proto_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+	$(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
+	$(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/autofill_regex_constants.cc: $(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/autofill_regex_constants.cc
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/address.cc \
+	components/autofill/browser/address_field.cc \
+	components/autofill/browser/autocheckout/whitelist_manager.cc \
+	components/autofill/browser/autocheckout_manager.cc \
+	components/autofill/browser/autocheckout_page_meta_data.cc \
+	components/autofill/browser/autocheckout_request_manager.cc \
+	components/autofill/browser/autocomplete_history_manager.cc \
+	components/autofill/browser/autofill_country.cc \
+	components/autofill/browser/autofill_data_model.cc \
+	components/autofill/browser/autofill_download.cc \
+	components/autofill/browser/autofill_download_url.cc \
+	components/autofill/browser/autofill_external_delegate.cc \
+	components/autofill/browser/autofill_field.cc \
+	components/autofill/browser/autofill_manager.cc \
+	components/autofill/browser/autofill_metrics.cc \
+	components/autofill/browser/autofill_profile.cc \
+	components/autofill/browser/autofill_regexes.cc \
+	components/autofill/browser/autofill_scanner.cc \
+	components/autofill/browser/autofill_type.cc \
+	components/autofill/browser/autofill_xml_parser.cc \
+	components/autofill/browser/contact_info.cc \
+	components/autofill/browser/credit_card.cc \
+	components/autofill/browser/credit_card_field.cc \
+	components/autofill/browser/email_field.cc \
+	components/autofill/browser/form_field.cc \
+	components/autofill/browser/form_group.cc \
+	components/autofill/browser/form_structure.cc \
+	components/autofill/browser/name_field.cc \
+	components/autofill/browser/password_autofill_manager.cc \
+	components/autofill/browser/password_generator.cc \
+	components/autofill/browser/personal_data_manager.cc \
+	components/autofill/browser/phone_field.cc \
+	components/autofill/browser/phone_number.cc \
+	components/autofill/browser/phone_number_i18n.cc \
+	components/autofill/browser/risk/fingerprint.cc \
+	components/autofill/browser/state_names.cc \
+	components/autofill/browser/validation.cc \
+	components/autofill/browser/wallet/cart.cc \
+	components/autofill/browser/wallet/encryption_escrow_client.cc \
+	components/autofill/browser/wallet/full_wallet.cc \
+	components/autofill/browser/wallet/instrument.cc \
+	components/autofill/browser/wallet/required_action.cc \
+	components/autofill/browser/wallet/wallet_address.cc \
+	components/autofill/browser/wallet/wallet_client.cc \
+	components/autofill/browser/wallet/wallet_items.cc \
+	components/autofill/browser/wallet/wallet_service_url.cc \
+	components/autofill/browser/wallet/wallet_signin_helper.cc \
+	components/autofill/browser/webdata/autofill_change.cc \
+	components/autofill/browser/webdata/autofill_entry.cc \
+	components/autofill/browser/webdata/autofill_table.cc \
+	components/autofill/browser/webdata/autofill_webdata_backend.cc \
+	components/autofill/browser/webdata/autofill_webdata_service.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-DFEATURE_ENABLE_SSL' \
+	'-DFEATURE_ENABLE_VOICEMAIL' \
+	'-DEXPAT_RELATIVE_PATH' \
+	'-DGTEST_RELATIVE_PATH' \
+	'-DJSONCPP_RELATIVE_PATH' \
+	'-DNO_MAIN_THREAD_WRAPPING' \
+	'-DNO_SOUND_SYSTEM' \
+	'-DANDROID' \
+	'-DPOSIX' \
+	'-DPOSIX_AVOID_MMAP' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/libjingle/overrides \
+	$(LOCAL_PATH)/third_party/libjingle/source \
+	$(LOCAL_PATH)/testing/gtest/include \
+	$(LOCAL_PATH)/third_party \
+	$(LOCAL_PATH)/third_party/webrtc \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/expat/lib \
+	$(LOCAL_PATH)/third_party/jsoncpp/overrides/include \
+	$(LOCAL_PATH)/third_party/jsoncpp/source/include \
+	$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
+	$(LOCAL_PATH)/third_party/libphonenumber/src \
+	$(gyp_shared_intermediate_dir)/webkit \
+	$(gyp_shared_intermediate_dir)/chrome \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	components_autofill_risk_proto_gyp \
+	skia_skia_gyp \
+	third_party_libphonenumber_libphonenumber_without_metadata_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_browser_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_browser
+autofill_browser: components_autofill_browser_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_browser.target.linux-x86.mk b/components/autofill_browser.target.linux-x86.mk
new file mode 100644
index 0000000..67df852
--- /dev/null
+++ b/components/autofill_browser.target.linux-x86.mk
@@ -0,0 +1,266 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_browser_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,GYP,components_autofill_regexes_gyp)/autofill_regexes.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,components_autofill_risk_proto_gyp)/components_autofill_risk_proto_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,GYP,third_party_icu_icui18n_gyp)/icui18n.stamp \
+	$(call intermediates-dir-for,GYP,third_party_icu_icuuc_gyp)/icuuc.stamp \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,third_party_libphonenumber_libphonenumber_without_metadata_gyp)/third_party_libphonenumber_libphonenumber_without_metadata_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,webkit_support_webkit_resources_gyp)/webkit_resources.stamp \
+	$(call intermediates-dir-for,GYP,chrome_chrome_strings_gyp)/chrome_strings.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/autofill_regex_constants.cc: $(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/autofill_regex_constants.cc
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/address.cc \
+	components/autofill/browser/address_field.cc \
+	components/autofill/browser/autocheckout/whitelist_manager.cc \
+	components/autofill/browser/autocheckout_manager.cc \
+	components/autofill/browser/autocheckout_page_meta_data.cc \
+	components/autofill/browser/autocheckout_request_manager.cc \
+	components/autofill/browser/autocomplete_history_manager.cc \
+	components/autofill/browser/autofill_country.cc \
+	components/autofill/browser/autofill_data_model.cc \
+	components/autofill/browser/autofill_download.cc \
+	components/autofill/browser/autofill_download_url.cc \
+	components/autofill/browser/autofill_external_delegate.cc \
+	components/autofill/browser/autofill_field.cc \
+	components/autofill/browser/autofill_manager.cc \
+	components/autofill/browser/autofill_metrics.cc \
+	components/autofill/browser/autofill_profile.cc \
+	components/autofill/browser/autofill_regexes.cc \
+	components/autofill/browser/autofill_scanner.cc \
+	components/autofill/browser/autofill_type.cc \
+	components/autofill/browser/autofill_xml_parser.cc \
+	components/autofill/browser/contact_info.cc \
+	components/autofill/browser/credit_card.cc \
+	components/autofill/browser/credit_card_field.cc \
+	components/autofill/browser/email_field.cc \
+	components/autofill/browser/form_field.cc \
+	components/autofill/browser/form_group.cc \
+	components/autofill/browser/form_structure.cc \
+	components/autofill/browser/name_field.cc \
+	components/autofill/browser/password_autofill_manager.cc \
+	components/autofill/browser/password_generator.cc \
+	components/autofill/browser/personal_data_manager.cc \
+	components/autofill/browser/phone_field.cc \
+	components/autofill/browser/phone_number.cc \
+	components/autofill/browser/phone_number_i18n.cc \
+	components/autofill/browser/risk/fingerprint.cc \
+	components/autofill/browser/state_names.cc \
+	components/autofill/browser/validation.cc \
+	components/autofill/browser/wallet/cart.cc \
+	components/autofill/browser/wallet/encryption_escrow_client.cc \
+	components/autofill/browser/wallet/full_wallet.cc \
+	components/autofill/browser/wallet/instrument.cc \
+	components/autofill/browser/wallet/required_action.cc \
+	components/autofill/browser/wallet/wallet_address.cc \
+	components/autofill/browser/wallet/wallet_client.cc \
+	components/autofill/browser/wallet/wallet_items.cc \
+	components/autofill/browser/wallet/wallet_service_url.cc \
+	components/autofill/browser/wallet/wallet_signin_helper.cc \
+	components/autofill/browser/webdata/autofill_change.cc \
+	components/autofill/browser/webdata/autofill_entry.cc \
+	components/autofill/browser/webdata/autofill_table.cc \
+	components/autofill/browser/webdata/autofill_webdata_backend.cc \
+	components/autofill/browser/webdata/autofill_webdata_service.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-DFEATURE_ENABLE_SSL' \
+	'-DFEATURE_ENABLE_VOICEMAIL' \
+	'-DEXPAT_RELATIVE_PATH' \
+	'-DGTEST_RELATIVE_PATH' \
+	'-DJSONCPP_RELATIVE_PATH' \
+	'-DNO_MAIN_THREAD_WRAPPING' \
+	'-DNO_SOUND_SYSTEM' \
+	'-DANDROID' \
+	'-DPOSIX' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/libjingle/overrides \
+	$(LOCAL_PATH)/third_party/libjingle/source \
+	$(LOCAL_PATH)/testing/gtest/include \
+	$(LOCAL_PATH)/third_party \
+	$(LOCAL_PATH)/third_party/webrtc \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/expat/lib \
+	$(LOCAL_PATH)/third_party/jsoncpp/overrides/include \
+	$(LOCAL_PATH)/third_party/jsoncpp/source/include \
+	$(gyp_shared_intermediate_dir)/protoc_out/third_party/libphonenumber \
+	$(LOCAL_PATH)/third_party/libphonenumber/src \
+	$(gyp_shared_intermediate_dir)/webkit \
+	$(gyp_shared_intermediate_dir)/chrome \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	components_autofill_risk_proto_gyp \
+	skia_skia_gyp \
+	third_party_libphonenumber_libphonenumber_without_metadata_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_browser_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_browser
+autofill_browser: components_autofill_browser_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_common.target.darwin-arm.mk b/components/autofill_common.target.darwin-arm.mk
new file mode 100644
index 0000000..c48d85a
--- /dev/null
+++ b/components/autofill_common.target.darwin-arm.mk
@@ -0,0 +1,199 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,components_autofill_jni_headers_gyp)/autofill_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/android/auxiliary_profile_loader_android.cc \
+	components/autofill/browser/android/auxiliary_profiles_android.cc \
+	components/autofill/browser/android/component_jni_registrar.cc \
+	components/autofill/browser/android/personal_data_manager_android.cc \
+	components/autofill/common/autofill_constants.cc \
+	components/autofill/common/autofill_message_generator.cc \
+	components/autofill/common/autofill_pref_names.cc \
+	components/autofill/common/autofill_switches.cc \
+	components/autofill/common/form_data.cc \
+	components/autofill/common/form_data_predictions.cc \
+	components/autofill/common/form_field_data.cc \
+	components/autofill/common/form_field_data_predictions.cc \
+	components/autofill/common/password_form_fill_data.cc \
+	components/autofill/common/password_generation_util.cc \
+	components/autofill/common/web_element_descriptor.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-DPOSIX_AVOID_MMAP' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/autofill \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/npapi \
+	$(LOCAL_PATH)/third_party/npapi/bindings \
+	$(LOCAL_PATH)/v8/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	skia_skia_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_common_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_common
+autofill_common: components_autofill_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_common.target.darwin-x86.mk b/components/autofill_common.target.darwin-x86.mk
new file mode 100644
index 0000000..ddc5eac
--- /dev/null
+++ b/components/autofill_common.target.darwin-x86.mk
@@ -0,0 +1,197 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,components_autofill_jni_headers_gyp)/autofill_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/android/auxiliary_profile_loader_android.cc \
+	components/autofill/browser/android/auxiliary_profiles_android.cc \
+	components/autofill/browser/android/component_jni_registrar.cc \
+	components/autofill/browser/android/personal_data_manager_android.cc \
+	components/autofill/common/autofill_constants.cc \
+	components/autofill/common/autofill_message_generator.cc \
+	components/autofill/common/autofill_pref_names.cc \
+	components/autofill/common/autofill_switches.cc \
+	components/autofill/common/form_data.cc \
+	components/autofill/common/form_data_predictions.cc \
+	components/autofill/common/form_field_data.cc \
+	components/autofill/common/form_field_data_predictions.cc \
+	components/autofill/common/password_form_fill_data.cc \
+	components/autofill/common/password_generation_util.cc \
+	components/autofill/common/web_element_descriptor.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/autofill \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/npapi \
+	$(LOCAL_PATH)/third_party/npapi/bindings \
+	$(LOCAL_PATH)/v8/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	skia_skia_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_common_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_common
+autofill_common: components_autofill_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_common.target.linux-arm.mk b/components/autofill_common.target.linux-arm.mk
new file mode 100644
index 0000000..c48d85a
--- /dev/null
+++ b/components/autofill_common.target.linux-arm.mk
@@ -0,0 +1,199 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,components_autofill_jni_headers_gyp)/autofill_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/android/auxiliary_profile_loader_android.cc \
+	components/autofill/browser/android/auxiliary_profiles_android.cc \
+	components/autofill/browser/android/component_jni_registrar.cc \
+	components/autofill/browser/android/personal_data_manager_android.cc \
+	components/autofill/common/autofill_constants.cc \
+	components/autofill/common/autofill_message_generator.cc \
+	components/autofill/common/autofill_pref_names.cc \
+	components/autofill/common/autofill_switches.cc \
+	components/autofill/common/form_data.cc \
+	components/autofill/common/form_data_predictions.cc \
+	components/autofill/common/form_field_data.cc \
+	components/autofill/common/form_field_data_predictions.cc \
+	components/autofill/common/password_form_fill_data.cc \
+	components/autofill/common/password_generation_util.cc \
+	components/autofill/common/web_element_descriptor.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-DPOSIX_AVOID_MMAP' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/autofill \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/npapi \
+	$(LOCAL_PATH)/third_party/npapi/bindings \
+	$(LOCAL_PATH)/v8/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	skia_skia_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_common_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_common
+autofill_common: components_autofill_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_common.target.linux-x86.mk b/components/autofill_common.target.linux-x86.mk
new file mode 100644
index 0000000..ddc5eac
--- /dev/null
+++ b/components/autofill_common.target.linux-x86.mk
@@ -0,0 +1,197 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,skia_skia_gyp)/skia_skia_gyp.a \
+	$(call intermediates-dir-for,STATIC_LIBRARIES,ui_ui_gyp)/ui_ui_gyp.a \
+	$(call intermediates-dir-for,GYP,components_autofill_jni_headers_gyp)/autofill_jni_headers.stamp
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/autofill/browser/android/auxiliary_profile_loader_android.cc \
+	components/autofill/browser/android/auxiliary_profiles_android.cc \
+	components/autofill/browser/android/component_jni_registrar.cc \
+	components/autofill/browser/android/personal_data_manager_android.cc \
+	components/autofill/common/autofill_constants.cc \
+	components/autofill/common/autofill_message_generator.cc \
+	components/autofill/common/autofill_pref_names.cc \
+	components/autofill/common/autofill_switches.cc \
+	components/autofill/common/form_data.cc \
+	components/autofill/common/form_data_predictions.cc \
+	components/autofill/common/form_field_data.cc \
+	components/autofill/common/form_field_data_predictions.cc \
+	components/autofill/common/password_form_fill_data.cc \
+	components/autofill/common/password_generation_util.cc \
+	components/autofill/common/web_element_descriptor.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DSK_BUILD_NO_IMAGE_ENCODE' \
+	'-DSK_DEFERRED_CANVAS_USES_GPIPE=1' \
+	'-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' \
+	'-DGR_AGGRESSIVE_SHADER_OPTS=1' \
+	'-DSK_ENABLE_INST_COUNT=0' \
+	'-DSK_USE_POSIX_THREADS' \
+	'-DSK_BUILD_FOR_ANDROID_NDK' \
+	'-DU_USING_ICU_NAMESPACE=0' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/autofill \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/third_party/WebKit/Source/Platform/chromium \
+	$(LOCAL_PATH)/skia/config \
+	$(LOCAL_PATH)/third_party/skia/src/core \
+	$(LOCAL_PATH)/third_party/skia/include/config \
+	$(LOCAL_PATH)/third_party/skia/include/core \
+	$(LOCAL_PATH)/third_party/skia/include/effects \
+	$(LOCAL_PATH)/third_party/skia/include/pdf \
+	$(LOCAL_PATH)/third_party/skia/include/gpu \
+	$(LOCAL_PATH)/third_party/skia/include/gpu/gl \
+	$(LOCAL_PATH)/third_party/skia/include/pathops \
+	$(LOCAL_PATH)/third_party/skia/include/pipe \
+	$(LOCAL_PATH)/third_party/skia/include/ports \
+	$(LOCAL_PATH)/third_party/skia/include/utils \
+	$(LOCAL_PATH)/skia/ext \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/common \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/icu4c/i18n \
+	$(LOCAL_PATH)/third_party/npapi \
+	$(LOCAL_PATH)/third_party/npapi/bindings \
+	$(LOCAL_PATH)/v8/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES := \
+	skia_skia_gyp \
+	ui_ui_gyp
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_common_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_common
+autofill_common: components_autofill_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_jni_headers.target.darwin-arm.mk b/components/autofill_jni_headers.target.darwin-arm.mk
new file mode 100644
index 0000000..a1ced87
--- /dev/null
+++ b/components/autofill_jni_headers.target.darwin-arm.mk
@@ -0,0 +1,142 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_jni_headers_gyp
+LOCAL_MODULE_STEM := autofill_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "components_components_gyp_autofill_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../base/android/jni_generator/jni_generator.py'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/autofill/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java'], 'action': ['../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/autofill/jni', '--optimize_generation', '0'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: $(LOCAL_PATH)/components/autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/autofill/jni; cd $(gyp_local_path)/components; ../base/android/jni_generator/jni_generator.py --input_file autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java --output_dir "$(gyp_shared_intermediate_dir)/autofill/jni" --optimize_generation 0
+
+.PHONY: components_autofill_jni_headers_gyp_rule_trigger
+components_autofill_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h \
+	components_autofill_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_jni_headers
+autofill_jni_headers: components_autofill_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_jni_headers.target.darwin-x86.mk b/components/autofill_jni_headers.target.darwin-x86.mk
new file mode 100644
index 0000000..45a1cf3
--- /dev/null
+++ b/components/autofill_jni_headers.target.darwin-x86.mk
@@ -0,0 +1,143 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_jni_headers_gyp
+LOCAL_MODULE_STEM := autofill_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "components_components_gyp_autofill_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../base/android/jni_generator/jni_generator.py'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/autofill/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java'], 'action': ['../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/autofill/jni', '--optimize_generation', '0'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: $(LOCAL_PATH)/components/autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/autofill/jni; cd $(gyp_local_path)/components; ../base/android/jni_generator/jni_generator.py --input_file autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java --output_dir "$(gyp_shared_intermediate_dir)/autofill/jni" --optimize_generation 0
+
+.PHONY: components_autofill_jni_headers_gyp_rule_trigger
+components_autofill_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h \
+	components_autofill_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_jni_headers
+autofill_jni_headers: components_autofill_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_jni_headers.target.linux-arm.mk b/components/autofill_jni_headers.target.linux-arm.mk
new file mode 100644
index 0000000..a1ced87
--- /dev/null
+++ b/components/autofill_jni_headers.target.linux-arm.mk
@@ -0,0 +1,142 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_jni_headers_gyp
+LOCAL_MODULE_STEM := autofill_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "components_components_gyp_autofill_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../base/android/jni_generator/jni_generator.py'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/autofill/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java'], 'action': ['../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/autofill/jni', '--optimize_generation', '0'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: $(LOCAL_PATH)/components/autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/autofill/jni; cd $(gyp_local_path)/components; ../base/android/jni_generator/jni_generator.py --input_file autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java --output_dir "$(gyp_shared_intermediate_dir)/autofill/jni" --optimize_generation 0
+
+.PHONY: components_autofill_jni_headers_gyp_rule_trigger
+components_autofill_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h \
+	components_autofill_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_jni_headers
+autofill_jni_headers: components_autofill_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_jni_headers.target.linux-x86.mk b/components/autofill_jni_headers.target.linux-x86.mk
new file mode 100644
index 0000000..45a1cf3
--- /dev/null
+++ b/components/autofill_jni_headers.target.linux-x86.mk
@@ -0,0 +1,143 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_jni_headers_gyp
+LOCAL_MODULE_STEM := autofill_jni_headers
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+
+### Generated for rule "components_components_gyp_autofill_jni_headers_target_generate_jni_headers":
+# "{'inputs': ['../base/android/jni_generator/jni_generator.py'], 'process_outputs_as_sources': '1', 'extension': 'java', 'outputs': ['$(gyp_shared_intermediate_dir)/autofill/jni/%(INPUT_ROOT)s_jni.h'], 'rule_name': 'generate_jni_headers', 'rule_sources': ['autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java'], 'action': ['../base/android/jni_generator/jni_generator.py', '--input_file', '$(RULE_SOURCES)', '--output_dir', '$(gyp_shared_intermediate_dir)/autofill/jni', '--optimize_generation', '0'], 'message': 'Generating JNI bindings from $(RULE_SOURCES)'}":
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h: $(LOCAL_PATH)/components/autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java $(LOCAL_PATH)/base/android/jni_generator/jni_generator.py $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/autofill/jni; cd $(gyp_local_path)/components; ../base/android/jni_generator/jni_generator.py --input_file autofill/browser/android/java/src/org/chromium/components/browser/autofill/PersonalAutofillPopulator.java --output_dir "$(gyp_shared_intermediate_dir)/autofill/jni" --optimize_generation 0
+
+.PHONY: components_autofill_jni_headers_gyp_rule_trigger
+components_autofill_jni_headers_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_shared_intermediate_dir)/autofill/jni/PersonalAutofillPopulator_jni.h \
+	components_autofill_jni_headers_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_jni_headers_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_jni_headers
+autofill_jni_headers: components_autofill_jni_headers_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_regexes.target.darwin-arm.mk b/components/autofill_regexes.target.darwin-arm.mk
new file mode 100644
index 0000000..fc8b207
--- /dev/null
+++ b/components/autofill_regexes.target.darwin-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_regexes_gyp
+LOCAL_MODULE_STEM := autofill_regexes
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "autofill_regexes":
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: $(LOCAL_PATH)/build/escape_unicode.py $(LOCAL_PATH)/components/autofill/browser/autofill_regex_constants.cc.utf8 $(GYP_TARGET_DEPENDENCIES)
+	@echo "Gyp action: components_components_gyp_autofill_regexes_target_autofill_regexes ($@)"
+	$(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir); python ../build/escape_unicode.py -o "$(gyp_shared_intermediate_dir)" autofill/browser/autofill_regex_constants.cc.utf8
+
+
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_regexes_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_regexes
+autofill_regexes: components_autofill_regexes_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_regexes.target.darwin-x86.mk b/components/autofill_regexes.target.darwin-x86.mk
new file mode 100644
index 0000000..fc8b207
--- /dev/null
+++ b/components/autofill_regexes.target.darwin-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_regexes_gyp
+LOCAL_MODULE_STEM := autofill_regexes
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "autofill_regexes":
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: $(LOCAL_PATH)/build/escape_unicode.py $(LOCAL_PATH)/components/autofill/browser/autofill_regex_constants.cc.utf8 $(GYP_TARGET_DEPENDENCIES)
+	@echo "Gyp action: components_components_gyp_autofill_regexes_target_autofill_regexes ($@)"
+	$(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir); python ../build/escape_unicode.py -o "$(gyp_shared_intermediate_dir)" autofill/browser/autofill_regex_constants.cc.utf8
+
+
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_regexes_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_regexes
+autofill_regexes: components_autofill_regexes_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_regexes.target.linux-arm.mk b/components/autofill_regexes.target.linux-arm.mk
new file mode 100644
index 0000000..fc8b207
--- /dev/null
+++ b/components/autofill_regexes.target.linux-arm.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_regexes_gyp
+LOCAL_MODULE_STEM := autofill_regexes
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "autofill_regexes":
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: $(LOCAL_PATH)/build/escape_unicode.py $(LOCAL_PATH)/components/autofill/browser/autofill_regex_constants.cc.utf8 $(GYP_TARGET_DEPENDENCIES)
+	@echo "Gyp action: components_components_gyp_autofill_regexes_target_autofill_regexes ($@)"
+	$(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir); python ../build/escape_unicode.py -o "$(gyp_shared_intermediate_dir)" autofill/browser/autofill_regex_constants.cc.utf8
+
+
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_regexes_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_regexes
+autofill_regexes: components_autofill_regexes_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_regexes.target.linux-x86.mk b/components/autofill_regexes.target.linux-x86.mk
new file mode 100644
index 0000000..fc8b207
--- /dev/null
+++ b/components/autofill_regexes.target.linux-x86.mk
@@ -0,0 +1,50 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := GYP
+LOCAL_MODULE := components_autofill_regexes_gyp
+LOCAL_MODULE_STEM := autofill_regexes
+LOCAL_MODULE_SUFFIX := .stamp
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+### Rules for action "autofill_regexes":
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc: $(LOCAL_PATH)/build/escape_unicode.py $(LOCAL_PATH)/components/autofill/browser/autofill_regex_constants.cc.utf8 $(GYP_TARGET_DEPENDENCIES)
+	@echo "Gyp action: components_components_gyp_autofill_regexes_target_autofill_regexes ($@)"
+	$(hide)cd $(gyp_local_path)/components; mkdir -p $(gyp_shared_intermediate_dir); python ../build/escape_unicode.py -o "$(gyp_shared_intermediate_dir)" autofill/browser/autofill_regex_constants.cc.utf8
+
+
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/autofill_regex_constants.cc
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+### Rules for final target.
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_regexes_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_regexes
+autofill_regexes: components_autofill_regexes_gyp
+
+LOCAL_MODULE_PATH := $(PRODUCT_OUT)/gyp_stamp
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	$(hide) echo "Gyp timestamp: $@"
+	$(hide) mkdir -p $(dir $@)
+	$(hide) touch $@
diff --git a/components/autofill_risk_proto.target.darwin-arm.mk b/components/autofill_risk_proto.target.darwin-arm.mk
new file mode 100644
index 0000000..ae76a27
--- /dev/null
+++ b/components/autofill_risk_proto.target.darwin-arm.mk
@@ -0,0 +1,178 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_risk_proto_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(gyp_shared_intermediate_dir)/protoc
+
+
+### Generated for rule "components_components_gyp_autofill_risk_proto_target_genproto":
+# "{'inputs': ['../tools/protoc_wrapper/protoc_wrapper.py', '$(gyp_shared_intermediate_dir)/protoc'], 'msvs_cygwin_shell': '0', 'extension': 'proto', 'outputs': ['$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/%(INPUT_ROOT)s_pb2.py', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.cc', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h'], 'rule_name': 'genproto', 'rule_sources': ['autofill/browser/risk/proto/fingerprint.proto'], 'action': ['python', '../tools/protoc_wrapper/protoc_wrapper.py', '--include', '', '--protobuf', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h', '--proto-in-dir', 'autofill/browser/risk/proto', '--proto-in-file', '%(INPUT_ROOT)s$(suffix $<)', '--use-system-protobuf=0', '--', '$(gyp_shared_intermediate_dir)/protoc', '--cpp_out', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto', '--python_out', '$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto'], 'message': 'Generating C++ and Python code from $(RULE_SOURCES)', 'process_outputs_as_sources': '1'}":
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: $(LOCAL_PATH)/components/autofill/browser/risk/proto/fingerprint.proto $(LOCAL_PATH)/tools/protoc_wrapper/protoc_wrapper.py $(gyp_shared_intermediate_dir)/protoc $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto; cd $(gyp_local_path)/components; python ../tools/protoc_wrapper/protoc_wrapper.py --include "" --protobuf "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h" --proto-in-dir autofill/browser/risk/proto --proto-in-file "fingerprint$(suffix $<)" "--use-system-protobuf=0" -- "$(gyp_shared_intermediate_dir)/protoc" --cpp_out "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto" --python_out "$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto"
+
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+.PHONY: components_autofill_risk_proto_gyp_rule_trigger
+components_autofill_risk_proto_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h \
+	components_autofill_risk_proto_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH) \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_risk_proto_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_risk_proto
+autofill_risk_proto: components_autofill_risk_proto_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_risk_proto.target.darwin-x86.mk b/components/autofill_risk_proto.target.darwin-x86.mk
new file mode 100644
index 0000000..87682e4
--- /dev/null
+++ b/components/autofill_risk_proto.target.darwin-x86.mk
@@ -0,0 +1,177 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_risk_proto_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(gyp_shared_intermediate_dir)/protoc
+
+
+### Generated for rule "components_components_gyp_autofill_risk_proto_target_genproto":
+# "{'inputs': ['../tools/protoc_wrapper/protoc_wrapper.py', '$(gyp_shared_intermediate_dir)/protoc'], 'msvs_cygwin_shell': '0', 'extension': 'proto', 'outputs': ['$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/%(INPUT_ROOT)s_pb2.py', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.cc', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h'], 'rule_name': 'genproto', 'rule_sources': ['autofill/browser/risk/proto/fingerprint.proto'], 'action': ['python', '../tools/protoc_wrapper/protoc_wrapper.py', '--include', '', '--protobuf', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h', '--proto-in-dir', 'autofill/browser/risk/proto', '--proto-in-file', '%(INPUT_ROOT)s$(suffix $<)', '--use-system-protobuf=0', '--', '$(gyp_shared_intermediate_dir)/protoc', '--cpp_out', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto', '--python_out', '$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto'], 'message': 'Generating C++ and Python code from $(RULE_SOURCES)', 'process_outputs_as_sources': '1'}":
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: $(LOCAL_PATH)/components/autofill/browser/risk/proto/fingerprint.proto $(LOCAL_PATH)/tools/protoc_wrapper/protoc_wrapper.py $(gyp_shared_intermediate_dir)/protoc $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto; cd $(gyp_local_path)/components; python ../tools/protoc_wrapper/protoc_wrapper.py --include "" --protobuf "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h" --proto-in-dir autofill/browser/risk/proto --proto-in-file "fingerprint$(suffix $<)" "--use-system-protobuf=0" -- "$(gyp_shared_intermediate_dir)/protoc" --cpp_out "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto" --python_out "$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto"
+
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+.PHONY: components_autofill_risk_proto_gyp_rule_trigger
+components_autofill_risk_proto_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h \
+	components_autofill_risk_proto_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH) \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_risk_proto_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_risk_proto
+autofill_risk_proto: components_autofill_risk_proto_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_risk_proto.target.linux-arm.mk b/components/autofill_risk_proto.target.linux-arm.mk
new file mode 100644
index 0000000..ae76a27
--- /dev/null
+++ b/components/autofill_risk_proto.target.linux-arm.mk
@@ -0,0 +1,178 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_risk_proto_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(gyp_shared_intermediate_dir)/protoc
+
+
+### Generated for rule "components_components_gyp_autofill_risk_proto_target_genproto":
+# "{'inputs': ['../tools/protoc_wrapper/protoc_wrapper.py', '$(gyp_shared_intermediate_dir)/protoc'], 'msvs_cygwin_shell': '0', 'extension': 'proto', 'outputs': ['$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/%(INPUT_ROOT)s_pb2.py', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.cc', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h'], 'rule_name': 'genproto', 'rule_sources': ['autofill/browser/risk/proto/fingerprint.proto'], 'action': ['python', '../tools/protoc_wrapper/protoc_wrapper.py', '--include', '', '--protobuf', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h', '--proto-in-dir', 'autofill/browser/risk/proto', '--proto-in-file', '%(INPUT_ROOT)s$(suffix $<)', '--use-system-protobuf=0', '--', '$(gyp_shared_intermediate_dir)/protoc', '--cpp_out', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto', '--python_out', '$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto'], 'message': 'Generating C++ and Python code from $(RULE_SOURCES)', 'process_outputs_as_sources': '1'}":
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: $(LOCAL_PATH)/components/autofill/browser/risk/proto/fingerprint.proto $(LOCAL_PATH)/tools/protoc_wrapper/protoc_wrapper.py $(gyp_shared_intermediate_dir)/protoc $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto; cd $(gyp_local_path)/components; python ../tools/protoc_wrapper/protoc_wrapper.py --include "" --protobuf "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h" --proto-in-dir autofill/browser/risk/proto --proto-in-file "fingerprint$(suffix $<)" "--use-system-protobuf=0" -- "$(gyp_shared_intermediate_dir)/protoc" --cpp_out "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto" --python_out "$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto"
+
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+.PHONY: components_autofill_risk_proto_gyp_rule_trigger
+components_autofill_risk_proto_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h \
+	components_autofill_risk_proto_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH) \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_risk_proto_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_risk_proto
+autofill_risk_proto: components_autofill_risk_proto_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/autofill_risk_proto.target.linux-x86.mk b/components/autofill_risk_proto.target.linux-x86.mk
new file mode 100644
index 0000000..87682e4
--- /dev/null
+++ b/components/autofill_risk_proto.target.linux-x86.mk
@@ -0,0 +1,177 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_autofill_risk_proto_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES := \
+	$(gyp_shared_intermediate_dir)/protoc
+
+
+### Generated for rule "components_components_gyp_autofill_risk_proto_target_genproto":
+# "{'inputs': ['../tools/protoc_wrapper/protoc_wrapper.py', '$(gyp_shared_intermediate_dir)/protoc'], 'msvs_cygwin_shell': '0', 'extension': 'proto', 'outputs': ['$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/%(INPUT_ROOT)s_pb2.py', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.cc', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h'], 'rule_name': 'genproto', 'rule_sources': ['autofill/browser/risk/proto/fingerprint.proto'], 'action': ['python', '../tools/protoc_wrapper/protoc_wrapper.py', '--include', '', '--protobuf', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/%(INPUT_ROOT)s.pb.h', '--proto-in-dir', 'autofill/browser/risk/proto', '--proto-in-file', '%(INPUT_ROOT)s$(suffix $<)', '--use-system-protobuf=0', '--', '$(gyp_shared_intermediate_dir)/protoc', '--cpp_out', '$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto', '--python_out', '$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto'], 'message': 'Generating C++ and Python code from $(RULE_SOURCES)', 'process_outputs_as_sources': '1'}":
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_local_path := $(LOCAL_PATH)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: gyp_shared_intermediate_dir := $(GYP_ABS_ANDROID_TOP_DIR)/$(gyp_shared_intermediate_dir)
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: export PATH := $(subst $(ANDROID_BUILD_PATHS),,$(PATH))
+$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py: $(LOCAL_PATH)/components/autofill/browser/risk/proto/fingerprint.proto $(LOCAL_PATH)/tools/protoc_wrapper/protoc_wrapper.py $(gyp_shared_intermediate_dir)/protoc $(GYP_TARGET_DEPENDENCIES)
+	mkdir -p $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto; cd $(gyp_local_path)/components; python ../tools/protoc_wrapper/protoc_wrapper.py --include "" --protobuf "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h" --proto-in-dir autofill/browser/risk/proto --proto-in-file "fingerprint$(suffix $<)" "--use-system-protobuf=0" -- "$(gyp_shared_intermediate_dir)/protoc" --cpp_out "$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto" --python_out "$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto"
+
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+.PHONY: components_autofill_risk_proto_gyp_rule_trigger
+components_autofill_risk_proto_gyp_rule_trigger: $(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py
+
+### Finished generating for all rules
+
+GYP_GENERATED_OUTPUTS := \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+$(gyp_intermediate_dir)/fingerprint.pb.cc: $(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.cc
+	mkdir -p $(@D); cp $< $@
+LOCAL_GENERATED_SOURCES := \
+	$(gyp_intermediate_dir)/fingerprint.pb.cc \
+	$(gyp_shared_intermediate_dir)/pyproto/components/autofill/browser/risk/proto/fingerprint_pb2.py \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto/fingerprint.pb.h \
+	components_autofill_risk_proto_gyp_rule_trigger
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS := \
+	$(gyp_shared_intermediate_dir)/protoc_out/components/autofill/browser/risk/proto
+
+LOCAL_SRC_FILES :=
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DPROTOBUF_USE_DLLS' \
+	'-DGOOGLE_PROTOBUF_NO_RTTI' \
+	'-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(gyp_shared_intermediate_dir)/protoc_out \
+	$(LOCAL_PATH) \
+	$(LOCAL_PATH)/third_party/protobuf \
+	$(LOCAL_PATH)/third_party/protobuf/src \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_autofill_risk_proto_gyp
+
+# Alias gyp target name.
+.PHONY: autofill_risk_proto
+autofill_risk_proto: components_autofill_risk_proto_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/encryptor.target.darwin-arm.mk b/components/encryptor.target.darwin-arm.mk
new file mode 100644
index 0000000..13d6f8e
--- /dev/null
+++ b/components/encryptor.target.darwin-arm.mk
@@ -0,0 +1,146 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_encryptor_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/encryptor/encryptor_posix.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_encryptor_gyp
+
+# Alias gyp target name.
+.PHONY: encryptor
+encryptor: components_encryptor_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/encryptor.target.darwin-x86.mk b/components/encryptor.target.darwin-x86.mk
new file mode 100644
index 0000000..c972136
--- /dev/null
+++ b/components/encryptor.target.darwin-x86.mk
@@ -0,0 +1,145 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_encryptor_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/encryptor/encryptor_posix.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_encryptor_gyp
+
+# Alias gyp target name.
+.PHONY: encryptor
+encryptor: components_encryptor_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/encryptor.target.linux-arm.mk b/components/encryptor.target.linux-arm.mk
new file mode 100644
index 0000000..13d6f8e
--- /dev/null
+++ b/components/encryptor.target.linux-arm.mk
@@ -0,0 +1,146 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_encryptor_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/encryptor/encryptor_posix.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_encryptor_gyp
+
+# Alias gyp target name.
+.PHONY: encryptor
+encryptor: components_encryptor_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/encryptor.target.linux-x86.mk b/components/encryptor.target.linux-x86.mk
new file mode 100644
index 0000000..c972136
--- /dev/null
+++ b/components/encryptor.target.linux-x86.mk
@@ -0,0 +1,145 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_encryptor_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/encryptor/encryptor_posix.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_encryptor_gyp
+
+# Alias gyp target name.
+.PHONY: encryptor
+encryptor: components_encryptor_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/navigation_interception/OWNERS b/components/navigation_interception/OWNERS
index d7b0401..82ab373 100644
--- a/components/navigation_interception/OWNERS
+++ b/components/navigation_interception/OWNERS
@@ -1,3 +1,2 @@
[email protected]
 [email protected]
 [email protected]
diff --git a/components/webdata_common.target.darwin-arm.mk b/components/webdata_common.target.darwin-arm.mk
new file mode 100644
index 0000000..e2f15e8
--- /dev/null
+++ b/components/webdata_common.target.darwin-arm.mk
@@ -0,0 +1,157 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_webdata_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/common/web_database.cc \
+	components/webdata/common/web_database_service.cc \
+	components/webdata/common/web_database_table.cc \
+	components/webdata/common/web_data_request_manager.cc \
+	components/webdata/common/web_data_service_backend.cc \
+	components/webdata/common/web_data_service_base.cc \
+	components/webdata/common/webdata_constants.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DWEBDATA_IMPLEMENTATION' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_webdata_common_gyp
+
+# Alias gyp target name.
+.PHONY: webdata_common
+webdata_common: components_webdata_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/webdata_common.target.darwin-x86.mk b/components/webdata_common.target.darwin-x86.mk
new file mode 100644
index 0000000..8e8f68e
--- /dev/null
+++ b/components/webdata_common.target.darwin-x86.mk
@@ -0,0 +1,156 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_webdata_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/common/web_database.cc \
+	components/webdata/common/web_database_service.cc \
+	components/webdata/common/web_database_table.cc \
+	components/webdata/common/web_data_request_manager.cc \
+	components/webdata/common/web_data_service_backend.cc \
+	components/webdata/common/web_data_service_base.cc \
+	components/webdata/common/webdata_constants.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DWEBDATA_IMPLEMENTATION' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_webdata_common_gyp
+
+# Alias gyp target name.
+.PHONY: webdata_common
+webdata_common: components_webdata_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/webdata_common.target.linux-arm.mk b/components/webdata_common.target.linux-arm.mk
new file mode 100644
index 0000000..e2f15e8
--- /dev/null
+++ b/components/webdata_common.target.linux-arm.mk
@@ -0,0 +1,157 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_webdata_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/common/web_database.cc \
+	components/webdata/common/web_database_service.cc \
+	components/webdata/common/web_database_table.cc \
+	components/webdata/common/web_data_request_manager.cc \
+	components/webdata/common/web_data_service_backend.cc \
+	components/webdata/common/web_data_service_base.cc \
+	components/webdata/common/webdata_constants.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	-fstack-protector \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-fno-tree-sra \
+	-fuse-ld=gold \
+	-Wno-psabi \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fstack-protector \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DWEBDATA_IMPLEMENTATION' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-abi \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-Wl,-z,relro \
+	-Wl,-z,now \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--icf=safe \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_webdata_common_gyp
+
+# Alias gyp target name.
+.PHONY: webdata_common
+webdata_common: components_webdata_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/components/webdata_common.target.linux-x86.mk b/components/webdata_common.target.linux-x86.mk
new file mode 100644
index 0000000..8e8f68e
--- /dev/null
+++ b/components/webdata_common.target.linux-x86.mk
@@ -0,0 +1,156 @@
+# This file is generated by gyp; do not edit.
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+LOCAL_MODULE := components_webdata_common_gyp
+LOCAL_MODULE_SUFFIX := .a
+LOCAL_MODULE_TAGS := optional
+gyp_intermediate_dir := $(call local-intermediates-dir)
+gyp_shared_intermediate_dir := $(call intermediates-dir-for,GYP,shared)
+
+# Make sure our deps are built first.
+GYP_TARGET_DEPENDENCIES :=
+
+GYP_GENERATED_OUTPUTS :=
+
+# Make sure our deps and generated files are built first.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(GYP_TARGET_DEPENDENCIES) $(GYP_GENERATED_OUTPUTS)
+
+LOCAL_CPP_EXTENSION := .cc
+LOCAL_GENERATED_SOURCES :=
+
+GYP_COPIED_SOURCE_ORIGIN_DIRS :=
+
+LOCAL_SRC_FILES := \
+	components/webdata/common/web_database.cc \
+	components/webdata/common/web_database_service.cc \
+	components/webdata/common/web_database_table.cc \
+	components/webdata/common/web_data_request_manager.cc \
+	components/webdata/common/web_data_service_backend.cc \
+	components/webdata/common/web_data_service_base.cc \
+	components/webdata/common/webdata_constants.cc
+
+
+# Flags passed to both C and C++ files.
+MY_CFLAGS := \
+	--param=ssp-buffer-size=4 \
+	-Werror \
+	-fno-exceptions \
+	-fno-strict-aliasing \
+	-Wall \
+	-Wno-unused-parameter \
+	-Wno-missing-field-initializers \
+	-fvisibility=hidden \
+	-pipe \
+	-fPIC \
+	-m32 \
+	-mmmx \
+	-march=pentium4 \
+	-msse2 \
+	-mfpmath=sse \
+	-fuse-ld=gold \
+	-ffunction-sections \
+	-funwind-tables \
+	-g \
+	-fno-short-enums \
+	-finline-limit=64 \
+	-Wa,--noexecstack \
+	-U_FORTIFY_SOURCE \
+	-Wno-extra \
+	-Wno-ignored-qualifiers \
+	-Wno-type-limits \
+	-fno-stack-protector \
+	-Os \
+	-g \
+	-fomit-frame-pointer \
+	-fdata-sections \
+	-ffunction-sections
+
+MY_CFLAGS_C :=
+
+MY_DEFS := \
+	'-D_FILE_OFFSET_BITS=64' \
+	'-DUSE_LINUX_BREAKPAD' \
+	'-DNO_TCMALLOC' \
+	'-DDISABLE_NACL' \
+	'-DCHROMIUM_BUILD' \
+	'-DUSE_LIBJPEG_TURBO=1' \
+	'-DUSE_PROPRIETARY_CODECS' \
+	'-DENABLE_GPU=1' \
+	'-DUSE_OPENSSL=1' \
+	'-DENABLE_EGLIMAGE=1' \
+	'-DENABLE_LANGUAGE_DETECTION=1' \
+	'-DWEBDATA_IMPLEMENTATION' \
+	'-D__STDC_CONSTANT_MACROS' \
+	'-D__STDC_FORMAT_MACROS' \
+	'-DANDROID' \
+	'-D__GNU_SOURCE=1' \
+	'-DUSE_STLPORT=1' \
+	'-D_STLP_USE_PTR_SPECIALIZATIONS=1' \
+	'-DCHROME_BUILD_ID=""' \
+	'-DDYNAMIC_ANNOTATIONS_ENABLED=1' \
+	'-DWTF_USE_DYNAMIC_ANNOTATIONS=1' \
+	'-D_DEBUG'
+
+LOCAL_CFLAGS := $(MY_CFLAGS_C) $(MY_CFLAGS) $(MY_DEFS)
+
+# Include paths placed before CFLAGS/CPPFLAGS
+LOCAL_C_INCLUDES := \
+	$(LOCAL_PATH) \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(LOCAL_PATH)/third_party/khronos \
+	$(LOCAL_PATH)/gpu \
+	$(GYP_ABS_ANDROID_TOP_DIR)/frameworks/wilhelm/include \
+	$(GYP_ABS_ANDROID_TOP_DIR)/bionic \
+	$(GYP_ABS_ANDROID_TOP_DIR)/external/stlport/stlport
+
+LOCAL_C_INCLUDES := $(GYP_COPIED_SOURCE_ORIGIN_DIRS) $(LOCAL_C_INCLUDES)
+
+# Flags passed to only C++ (and not C) files.
+LOCAL_CPPFLAGS := \
+	-fno-rtti \
+	-fno-threadsafe-statics \
+	-fvisibility-inlines-hidden \
+	-Wsign-compare \
+	-Wno-error=c++0x-compat \
+	-Wno-non-virtual-dtor \
+	-Wno-sign-promo
+
+### Rules for final target.
+
+LOCAL_LDFLAGS := \
+	-Wl,-z,now \
+	-Wl,-z,relro \
+	-Wl,-z,noexecstack \
+	-fPIC \
+	-m32 \
+	-fuse-ld=gold \
+	-nostdlib \
+	-Wl,--no-undefined \
+	-Wl,--exclude-libs=ALL \
+	-Wl,--gc-sections \
+	-Wl,-O1 \
+	-Wl,--as-needed
+
+
+LOCAL_STATIC_LIBRARIES :=
+
+# Enable grouping to fix circular references
+LOCAL_GROUP_STATIC_LIBRARIES := true
+
+LOCAL_SHARED_LIBRARIES := \
+	libstlport \
+	libdl
+
+# Add target alias to "gyp_all_modules" target.
+.PHONY: gyp_all_modules
+gyp_all_modules: components_webdata_common_gyp
+
+# Alias gyp target name.
+.PHONY: webdata_common
+webdata_common: components_webdata_common_gyp
+
+include $(BUILD_STATIC_LIBRARY)