| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FIELD_H_ | 5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FIELD_H_ |
| 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FIELD_H_ | 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FIELD_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 MATCH_DEFAULT = MATCH_LABEL | MATCH_NAME | MATCH_VALUE | MATCH_TEXT, | 52 MATCH_DEFAULT = MATCH_LABEL | MATCH_NAME | MATCH_VALUE | MATCH_TEXT, |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 // Only derived classes may instantiate. | 55 // Only derived classes may instantiate. |
| 56 FormField() {} | 56 FormField() {} |
| 57 | 57 |
| 58 // Attempts to parse a form field with the given pattern. Returns true on | 58 // Attempts to parse a form field with the given pattern. Returns true on |
| 59 // success and fills |match| with a pointer to the field. | 59 // success and fills |match| with a pointer to the field. |
| 60 static bool ParseField(AutofillScanner* scanner, | 60 static bool ParseField(AutofillScanner* scanner, |
| 61 const base::string16& pattern, | 61 const base::string16& pattern, |
| 62 const AutofillField** match); | 62 AutofillField** match); |
| 63 | 63 |
| 64 // Parses the stream of fields in |scanner| with regular expression |pattern| | 64 // Parses the stream of fields in |scanner| with regular expression |pattern| |
| 65 // as specified in the |match_type| bit field (see |MatchType|). If |match| | 65 // as specified in the |match_type| bit field (see |MatchType|). If |match| |
| 66 // is non-NULL and the pattern matches, the matched field is returned. | 66 // is non-NULL and the pattern matches, the matched field is returned. |
| 67 // A |true| result is returned in the case of a successful match, false | 67 // A |true| result is returned in the case of a successful match, false |
| 68 // otherwise. | 68 // otherwise. |
| 69 static bool ParseFieldSpecifics(AutofillScanner* scanner, | 69 static bool ParseFieldSpecifics(AutofillScanner* scanner, |
| 70 const base::string16& pattern, | 70 const base::string16& pattern, |
| 71 int match_type, | 71 int match_type, |
| 72 const AutofillField** match); | 72 AutofillField** match); |
| 73 | 73 |
| 74 // Attempts to parse a field with an empty label. Returns true | 74 // Attempts to parse a field with an empty label. Returns true |
| 75 // on success and fills |match| with a pointer to the field. | 75 // on success and fills |match| with a pointer to the field. |
| 76 static bool ParseEmptyLabel(AutofillScanner* scanner, | 76 static bool ParseEmptyLabel(AutofillScanner* scanner, AutofillField** match); |
| 77 const AutofillField** match); | |
| 78 | 77 |
| 79 // Adds an association between a field and a type to |map|. | 78 // Adds an association between a field and a type to |map|. |
| 80 static bool AddClassification(const AutofillField* field, | 79 static bool AddClassification(const AutofillField* field, |
| 81 ServerFieldType type, | 80 ServerFieldType type, |
| 82 ServerFieldTypeMap* map); | 81 ServerFieldTypeMap* map); |
| 83 | 82 |
| 84 // Derived classes must implement this interface to supply field type | 83 // Derived classes must implement this interface to supply field type |
| 85 // information. |ParseFormFields| coordinates the parsing and extraction | 84 // information. |ParseFormFields| coordinates the parsing and extraction |
| 86 // of types from an input vector of |AutofillField| objects and delegates | 85 // of types from an input vector of |AutofillField| objects and delegates |
| 87 // the type extraction via this method. | 86 // the type extraction via this method. |
| 88 virtual bool ClassifyField(ServerFieldTypeMap* map) const = 0; | 87 virtual bool ClassifyField(ServerFieldTypeMap* map) const = 0; |
| 89 | 88 |
| 90 private: | 89 private: |
| 91 FRIEND_TEST_ALL_PREFIXES(FormFieldTest, Match); | 90 FRIEND_TEST_ALL_PREFIXES(FormFieldTest, Match); |
| 92 | 91 |
| 93 // Function pointer type for the parsing function that should be passed to the | 92 // Function pointer type for the parsing function that should be passed to the |
| 94 // ParseFormFieldsPass() helper function. | 93 // ParseFormFieldsPass() helper function. |
| 95 typedef FormField* ParseFunction(AutofillScanner* scanner); | 94 typedef FormField* ParseFunction(AutofillScanner* scanner); |
| 96 | 95 |
| 97 // Matches |pattern| to the contents of the field at the head of the | 96 // Matches |pattern| to the contents of the field at the head of the |
| 98 // |scanner|. | 97 // |scanner|. |
| 99 // Returns |true| if a match is found according to |match_type|, and |false| | 98 // Returns |true| if a match is found according to |match_type|, and |false| |
| 100 // otherwise. | 99 // otherwise. |
| 101 static bool MatchAndAdvance(AutofillScanner* scanner, | 100 static bool MatchAndAdvance(AutofillScanner* scanner, |
| 102 const base::string16& pattern, | 101 const base::string16& pattern, |
| 103 int match_type, | 102 int match_type, |
| 104 const AutofillField** match); | 103 AutofillField** match); |
| 105 | 104 |
| 106 // Matches the regular expression |pattern| against the components of |field| | 105 // Matches the regular expression |pattern| against the components of |field| |
| 107 // as specified in the |match_type| bit field (see |MatchType|). | 106 // as specified in the |match_type| bit field (see |MatchType|). |
| 108 static bool Match(const AutofillField* field, | 107 static bool Match(const AutofillField* field, |
| 109 const base::string16& pattern, | 108 const base::string16& pattern, |
| 110 int match_type); | 109 int match_type); |
| 111 | 110 |
| 112 // Perform a "pass" over the |fields| where each pass uses the supplied | 111 // Perform a "pass" over the |fields| where each pass uses the supplied |
| 113 // |parse| method to match content to a given field type. | 112 // |parse| method to match content to a given field type. |
| 114 // |fields| is both an input and an output parameter. Upon exit |fields| | 113 // |fields| is both an input and an output parameter. Upon exit |fields| |
| 115 // holds any remaining unclassified fields for further processing. | 114 // holds any remaining unclassified fields for further processing. |
| 116 // Classification results of the processed fields are stored in |map|. | 115 // Classification results of the processed fields are stored in |map|. |
| 117 static void ParseFormFieldsPass(ParseFunction parse, | 116 static void ParseFormFieldsPass(ParseFunction parse, |
| 118 std::vector<const AutofillField*>* fields, | 117 std::vector<AutofillField*>* fields, |
| 119 ServerFieldTypeMap* map); | 118 ServerFieldTypeMap* map); |
| 120 | 119 |
| 121 // Returns true iff |type| matches |match_type|. | 120 // Returns true iff |type| matches |match_type|. |
| 122 static bool MatchesFormControlType(const std::string& type, int match_type); | 121 static bool MatchesFormControlType(const std::string& type, int match_type); |
| 123 | 122 |
| 124 DISALLOW_COPY_AND_ASSIGN(FormField); | 123 DISALLOW_COPY_AND_ASSIGN(FormField); |
| 125 }; | 124 }; |
| 126 | 125 |
| 127 } // namespace autofill | 126 } // namespace autofill |
| 128 | 127 |
| 129 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FIELD_H_ | 128 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_FIELD_H_ |
| OLD | NEW |