| 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 #include "components/autofill/core/browser/form_structure.h" | 5 #include "components/autofill/core/browser/form_structure.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 const char kIgnorePatternInFieldName[] = "\\d{5,}+"; | 63 const char kIgnorePatternInFieldName[] = "\\d{5,}+"; |
| 64 | 64 |
| 65 // A form is considered to have a high prediction mismatch rate if the number of | 65 // A form is considered to have a high prediction mismatch rate if the number of |
| 66 // mismatches exceeds this threshold. | 66 // mismatches exceeds this threshold. |
| 67 const int kNumberOfMismatchesThreshold = 3; | 67 const int kNumberOfMismatchesThreshold = 3; |
| 68 | 68 |
| 69 // Returns whether sending autofill field metadata to the server is enabled. | 69 // Returns whether sending autofill field metadata to the server is enabled. |
| 70 bool IsAutofillFieldMetadataEnabled() { | 70 bool IsAutofillFieldMetadataEnabled() { |
| 71 const std::string group_name = | 71 const std::string group_name = |
| 72 base::FieldTrialList::FindFullName("AutofillFieldMetadata"); | 72 base::FieldTrialList::FindFullName("AutofillFieldMetadata"); |
| 73 return StartsWithASCII(group_name, "Enabled", true); | 73 return base::StartsWithASCII(group_name, "Enabled", true); |
| 74 } | 74 } |
| 75 | 75 |
| 76 // Helper for |EncodeUploadRequest()| that creates a bit field corresponding to | 76 // Helper for |EncodeUploadRequest()| that creates a bit field corresponding to |
| 77 // |available_field_types| and returns the hex representation as a string. | 77 // |available_field_types| and returns the hex representation as a string. |
| 78 std::string EncodeFieldTypes(const ServerFieldTypeSet& available_field_types) { | 78 std::string EncodeFieldTypes(const ServerFieldTypeSet& available_field_types) { |
| 79 // There are |MAX_VALID_FIELD_TYPE| different field types and 8 bits per byte, | 79 // There are |MAX_VALID_FIELD_TYPE| different field types and 8 bits per byte, |
| 80 // so we need ceil(MAX_VALID_FIELD_TYPE / 8) bytes to encode the bit field. | 80 // so we need ceil(MAX_VALID_FIELD_TYPE / 8) bytes to encode the bit field. |
| 81 const size_t kNumBytes = (MAX_VALID_FIELD_TYPE + 0x7) / 8; | 81 const size_t kNumBytes = (MAX_VALID_FIELD_TYPE + 0x7) / 8; |
| 82 | 82 |
| 83 // Pack the types in |available_field_types| into |bit_field|. | 83 // Pack the types in |available_field_types| into |bit_field|. |
| (...skipping 1054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 } | 1138 } |
| 1139 | 1139 |
| 1140 if (mode != HTML_MODE_NONE) { | 1140 if (mode != HTML_MODE_NONE) { |
| 1141 section = "-" + tokens.back(); | 1141 section = "-" + tokens.back(); |
| 1142 tokens.pop_back(); | 1142 tokens.pop_back(); |
| 1143 } | 1143 } |
| 1144 | 1144 |
| 1145 // The preceding token, if any, may be a named section. | 1145 // The preceding token, if any, may be a named section. |
| 1146 const std::string kSectionPrefix = "section-"; | 1146 const std::string kSectionPrefix = "section-"; |
| 1147 if (!tokens.empty() && | 1147 if (!tokens.empty() && |
| 1148 StartsWithASCII(tokens.back(), kSectionPrefix, true)) { | 1148 base::StartsWithASCII(tokens.back(), kSectionPrefix, true)) { |
| 1149 // Prepend this section name to the suffix set in the preceding block. | 1149 // Prepend this section name to the suffix set in the preceding block. |
| 1150 section = tokens.back().substr(kSectionPrefix.size()) + section; | 1150 section = tokens.back().substr(kSectionPrefix.size()) + section; |
| 1151 tokens.pop_back(); | 1151 tokens.pop_back(); |
| 1152 } | 1152 } |
| 1153 | 1153 |
| 1154 // No other tokens are allowed. If there are any remaining, abort. | 1154 // No other tokens are allowed. If there are any remaining, abort. |
| 1155 if (!tokens.empty()) | 1155 if (!tokens.empty()) |
| 1156 continue; | 1156 continue; |
| 1157 | 1157 |
| 1158 if (section != kDefaultSection) { | 1158 if (section != kDefaultSection) { |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1305 for (AutofillField* field : fields_) { | 1305 for (AutofillField* field : fields_) { |
| 1306 FieldTypeGroup field_type_group = field->Type().group(); | 1306 FieldTypeGroup field_type_group = field->Type().group(); |
| 1307 if (field_type_group == CREDIT_CARD) | 1307 if (field_type_group == CREDIT_CARD) |
| 1308 field->set_section(field->section() + "-cc"); | 1308 field->set_section(field->section() + "-cc"); |
| 1309 else | 1309 else |
| 1310 field->set_section(field->section() + "-default"); | 1310 field->set_section(field->section() + "-default"); |
| 1311 } | 1311 } |
| 1312 } | 1312 } |
| 1313 | 1313 |
| 1314 } // namespace autofill | 1314 } // namespace autofill |
| OLD | NEW |