Index: components/autofill/browser/form_field.cc |
diff --git a/components/autofill/browser/form_field.cc b/components/autofill/browser/form_field.cc |
deleted file mode 100644 |
index 809bd3c523fcefe0f5cef97f45dbe32994507482..0000000000000000000000000000000000000000 |
--- a/components/autofill/browser/form_field.cc |
+++ /dev/null |
@@ -1,200 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/autofill/browser/form_field.h" |
- |
-#include <stddef.h> |
-#include <string> |
-#include <utility> |
- |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "components/autofill/browser/address_field.h" |
-#include "components/autofill/browser/autofill_field.h" |
-#include "components/autofill/browser/autofill_regexes.h" |
-#include "components/autofill/browser/autofill_scanner.h" |
-#include "components/autofill/browser/credit_card_field.h" |
-#include "components/autofill/browser/email_field.h" |
-#include "components/autofill/browser/field_types.h" |
-#include "components/autofill/browser/form_structure.h" |
-#include "components/autofill/browser/name_field.h" |
-#include "components/autofill/browser/phone_field.h" |
-#include "ui/base/l10n/l10n_util.h" |
- |
-namespace autofill { |
-namespace { |
- |
-bool IsTextField(const std::string& type) { |
- return type == "text"; |
-} |
- |
-bool IsEmailField(const std::string& type) { |
- return type == "email"; |
-} |
- |
-bool IsTelephoneField(const std::string& type) { |
- return type == "tel"; |
-} |
- |
-bool IsSelectField(const std::string& type) { |
- return type == "select-one"; |
-} |
- |
-bool IsCheckable(const AutofillField* field) { |
- return field->is_checkable; |
-} |
- |
-} // namespace |
- |
-// static |
-void FormField::ParseFormFields(const std::vector<AutofillField*>& fields, |
- FieldTypeMap* map) { |
- // Set up a working copy of the fields to be processed. |
- std::vector<const AutofillField*> remaining_fields(fields.size()); |
- std::copy(fields.begin(), fields.end(), remaining_fields.begin()); |
- |
- // Ignore checkable fields as they interfere with parsers assuming context. |
- // Eg., while parsing address, "Is PO box" checkbox after ADDRESS_LINE1 |
- // interferes with correctly understanding ADDRESS_LINE2. |
- remaining_fields.erase( |
- std::remove_if(remaining_fields.begin(), remaining_fields.end(), |
- IsCheckable), |
- remaining_fields.end()); |
- |
- // Email pass. |
- ParseFormFieldsPass(EmailField::Parse, &remaining_fields, map); |
- |
- // Phone pass. |
- ParseFormFieldsPass(PhoneField::Parse, &remaining_fields, map); |
- |
- // Address pass. |
- ParseFormFieldsPass(AddressField::Parse, &remaining_fields, map); |
- |
- // Credit card pass. |
- ParseFormFieldsPass(CreditCardField::Parse, &remaining_fields, map); |
- |
- // Name pass. |
- ParseFormFieldsPass(NameField::Parse, &remaining_fields, map); |
-} |
- |
-// static |
-bool FormField::ParseField(AutofillScanner* scanner, |
- const base::string16& pattern, |
- const AutofillField** match) { |
- return ParseFieldSpecifics(scanner, pattern, MATCH_DEFAULT, match); |
-} |
- |
-// static |
-bool FormField::ParseFieldSpecifics(AutofillScanner* scanner, |
- const base::string16& pattern, |
- int match_type, |
- const AutofillField** match) { |
- if (scanner->IsEnd()) |
- return false; |
- |
- const AutofillField* field = scanner->Cursor(); |
- |
- if ((match_type & MATCH_TEXT) && IsTextField(field->form_control_type)) |
- return MatchAndAdvance(scanner, pattern, match_type, match); |
- |
- if ((match_type & MATCH_EMAIL) && IsEmailField(field->form_control_type)) |
- return MatchAndAdvance(scanner, pattern, match_type, match); |
- |
- if ((match_type & MATCH_TELEPHONE) && |
- IsTelephoneField(field->form_control_type)) { |
- return MatchAndAdvance(scanner, pattern, match_type, match); |
- } |
- |
- if ((match_type & MATCH_SELECT) && IsSelectField(field->form_control_type)) |
- return MatchAndAdvance(scanner, pattern, match_type, match); |
- |
- return false; |
-} |
- |
-// static |
-bool FormField::ParseEmptyLabel(AutofillScanner* scanner, |
- const AutofillField** match) { |
- return ParseFieldSpecifics(scanner, |
- ASCIIToUTF16("^$"), |
- MATCH_LABEL | MATCH_ALL_INPUTS, |
- match); |
-} |
- |
-// static |
-bool FormField::AddClassification(const AutofillField* field, |
- AutofillFieldType type, |
- FieldTypeMap* map) { |
- // Several fields are optional. |
- if (!field) |
- return true; |
- |
- return map->insert(make_pair(field->unique_name(), type)).second; |
-} |
- |
-// static. |
-bool FormField::MatchAndAdvance(AutofillScanner* scanner, |
- const base::string16& pattern, |
- int match_type, |
- const AutofillField** match) { |
- const AutofillField* field = scanner->Cursor(); |
- if (FormField::Match(field, pattern, match_type)) { |
- if (match) |
- *match = field; |
- scanner->Advance(); |
- return true; |
- } |
- |
- return false; |
-} |
- |
-// static |
-bool FormField::Match(const AutofillField* field, |
- const base::string16& pattern, |
- int match_type) { |
- if ((match_type & FormField::MATCH_LABEL) && |
- autofill::MatchesPattern(field->label, pattern)) { |
- return true; |
- } |
- |
- if ((match_type & FormField::MATCH_NAME) && |
- autofill::MatchesPattern(field->name, pattern)) { |
- return true; |
- } |
- |
- if ((match_type & FormField::MATCH_VALUE) && |
- autofill::MatchesPattern(field->value, pattern)) { |
- return true; |
- } |
- |
- return false; |
-} |
- |
-// static |
-void FormField::ParseFormFieldsPass(ParseFunction parse, |
- std::vector<const AutofillField*>* fields, |
- FieldTypeMap* map) { |
- // Store unmatched fields for further processing by the caller. |
- std::vector<const AutofillField*> remaining_fields; |
- |
- AutofillScanner scanner(*fields); |
- while (!scanner.IsEnd()) { |
- scoped_ptr<FormField> form_field(parse(&scanner)); |
- if (!form_field.get()) { |
- remaining_fields.push_back(scanner.Cursor()); |
- scanner.Advance(); |
- continue; |
- } |
- |
- // Add entries into the map for each field type found in |form_field|. |
- bool ok = form_field->ClassifyField(map); |
- DCHECK(ok); |
- } |
- |
- std::swap(*fields, remaining_fields); |
-} |
- |
-} // namespace autofill |