summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-21 03:41:29 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-21 03:41:29 +0000
commitd78ef705947b6f3bb52aa10cdf3ed21b579bf507 (patch)
treeaf16a66705dcab124b7ad7847eb38e7d222c21c9 /chrome
parent53aacae5fea0264040b0d0a5cdd40e202527b80d (diff)
downloadchromium_src-d78ef705947b6f3bb52aa10cdf3ed21b579bf507.zip
chromium_src-d78ef705947b6f3bb52aa10cdf3ed21b579bf507.tar.gz
chromium_src-d78ef705947b6f3bb52aa10cdf3ed21b579bf507.tar.bz2
AutoFill: Use DISALLOW_COPY_AND_ASSIGN where possible.
BUG=none TEST=none Review URL: http://codereview.chromium.org/2872008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50332 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/autofill/address_field.cc45
-rw-r--r--chrome/browser/autofill/address_field.h4
-rw-r--r--chrome/browser/autofill/autofill_field.h2
-rw-r--r--chrome/browser/autofill/credit_card_field.cc61
-rw-r--r--chrome/browser/autofill/credit_card_field.h4
-rw-r--r--chrome/browser/autofill/fax_field.cc12
-rw-r--r--chrome/browser/autofill/fax_field.h3
-rw-r--r--chrome/browser/autofill/name_field.cc46
-rw-r--r--chrome/browser/autofill/name_field.h4
-rw-r--r--chrome/browser/autofill/phone_field.cc25
-rw-r--r--chrome/browser/autofill/phone_field.h6
11 files changed, 87 insertions, 125 deletions
diff --git a/chrome/browser/autofill/address_field.cc b/chrome/browser/autofill/address_field.cc
index 6be96b2..e9abfcc 100644
--- a/chrome/browser/autofill/address_field.cc
+++ b/chrome/browser/autofill/address_field.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/autofill/address_field.h"
#include "base/logging.h"
+#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "base/string_util.h"
#include "chrome/browser/autofill/autofill_field.h"
@@ -75,25 +76,25 @@ AddressField* AddressField::Parse(
if (!iter)
return NULL;
- AddressField address_field;
+ scoped_ptr<AddressField> address_field(new AddressField);
std::vector<AutoFillField*>::const_iterator q = *iter;
string16 pattern;
// The ECML standard uses 2 letter country codes. So we will
// have to remember that this is an ECML form, for when we fill
// it out.
- address_field.is_ecml_ = is_ecml;
+ address_field->is_ecml_ = is_ecml;
// Allow address fields to appear in any order.
while (true) {
- if (ParseCompany(&q, is_ecml, &address_field) ||
- ParseAddressLines(&q, is_ecml, &address_field) ||
- ParseCity(&q, is_ecml, &address_field) ||
- ParseZipCode(&q, is_ecml, &address_field) ||
- ParseCountry(&q, is_ecml, &address_field)) {
+ if (ParseCompany(&q, is_ecml, address_field.get()) ||
+ ParseAddressLines(&q, is_ecml, address_field.get()) ||
+ ParseCity(&q, is_ecml, address_field.get()) ||
+ ParseZipCode(&q, is_ecml, address_field.get()) ||
+ ParseCountry(&q, is_ecml, address_field.get())) {
continue;
- } else if ((!address_field.state_ || address_field.state_->IsEmpty()) &&
- address_field.ParseState(&q, is_ecml, &address_field)) {
+ } else if ((!address_field->state_ || address_field->state_->IsEmpty()) &&
+ address_field->ParseState(&q, is_ecml, address_field.get())) {
continue;
} else if (ParseText(&q, ASCIIToUTF16("attention|attn.")) ||
ParseText(&q, ASCIIToUTF16("province|region|other"))) {
@@ -118,13 +119,13 @@ AddressField* AddressField::Parse(
// If we have identified any address fields in this field then it should be
// added to the list of fields.
- if (address_field.company_ != NULL ||
- address_field.address1_ != NULL || address_field.address2_ != NULL ||
- address_field.city_ != NULL || address_field.state_ != NULL ||
- address_field.zip_ != NULL || address_field.zip4_ ||
- address_field.country_ != NULL) {
+ if (address_field->company_ != NULL ||
+ address_field->address1_ != NULL || address_field->address2_ != NULL ||
+ address_field->city_ != NULL || address_field->state_ != NULL ||
+ address_field->zip_ != NULL || address_field->zip4_ ||
+ address_field->country_ != NULL) {
*iter = q;
- return new AddressField(address_field);
+ return address_field.release();
}
return NULL;
@@ -157,20 +158,6 @@ AddressField::AddressField()
is_ecml_(false) {
}
-AddressField::AddressField(const AddressField& field)
- : FormField(),
- company_(field.company_),
- address1_(field.address1_),
- address2_(field.address2_),
- city_(field.city_),
- state_(field.state_),
- zip_(field.zip_),
- zip4_(field.zip4_),
- country_(field.country_),
- type_(field.type_),
- is_ecml_(field.is_ecml_) {
-}
-
// static
bool AddressField::ParseCompany(
std::vector<AutoFillField*>::const_iterator* iter,
diff --git a/chrome/browser/autofill/address_field.h b/chrome/browser/autofill/address_field.h
index 57124e0..7629b45 100644
--- a/chrome/browser/autofill/address_field.h
+++ b/chrome/browser/autofill/address_field.h
@@ -31,8 +31,6 @@ class AddressField : public FormField {
private:
AddressField();
- explicit AddressField(const AddressField& field);
- void operator=(const AddressField&);
static bool ParseCompany(std::vector<AutoFillField*>::const_iterator* iter,
bool is_ecml, AddressField* address_field);
@@ -63,6 +61,8 @@ class AddressField : public FormField {
AddressType type_;
bool is_ecml_;
+
+ DISALLOW_COPY_AND_ASSIGN(AddressField);
};
#endif // CHROME_BROWSER_AUTOFILL_ADDRESS_FIELD_H_
diff --git a/chrome/browser/autofill/autofill_field.h b/chrome/browser/autofill/autofill_field.h
index f28ecf8..1d4fedd 100644
--- a/chrome/browser/autofill/autofill_field.h
+++ b/chrome/browser/autofill/autofill_field.h
@@ -57,6 +57,8 @@ class AutoFillField : public webkit_glue::FormField {
// The set of possible types for this field.
FieldTypeSet possible_types_;
+
+ DISALLOW_COPY_AND_ASSIGN(AutoFillField);
};
#endif // CHROME_BROWSER_AUTOFILL_AUTOFILL_FIELD_H_
diff --git a/chrome/browser/autofill/credit_card_field.cc b/chrome/browser/autofill/credit_card_field.cc
index 0352a07..ba55746 100644
--- a/chrome/browser/autofill/credit_card_field.cc
+++ b/chrome/browser/autofill/credit_card_field.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/autofill/credit_card_field.h"
+#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "chrome/browser/autofill/autofill_field.h"
@@ -39,7 +40,7 @@ bool CreditCardField::GetFieldInfo(FieldTypeMap* field_type_map) const {
CreditCardField* CreditCardField::Parse(
std::vector<AutoFillField*>::const_iterator* iter,
bool is_ecml) {
- CreditCardField credit_card_field;
+ scoped_ptr<CreditCardField> credit_card_field(new CreditCardField);
std::vector<AutoFillField*>::const_iterator q = *iter;
string16 pattern;
@@ -47,19 +48,18 @@ CreditCardField* CreditCardField::Parse(
// We loop until no more credit card related fields are found, see |break| at
// bottom of the loop.
for (int fields = 0; true; ++fields) {
- // Sometimes the cardholder field is just labeled "name" (e.g. on test page
- // Starbucks - Credit card.html). Unfortunately this is a dangerously
- // generic word to search for, since it will often match a name (not
- // cardholder name) field before or after credit card fields. So we search
- // for "name" only when we've already parsed at least one other credit card
- // field and haven't yet parsed the expiration date (which usually appears
- // at the end).
- if (credit_card_field.cardholder_ == NULL) {
+ // Sometimes the cardholder field is just labeled "name". Unfortunately this
+ // is a dangerously generic word to search for, since it will often match a
+ // name (not cardholder name) field before or after credit card fields. So
+ // we search for "name" only when we've already parsed at least one other
+ // credit card field and haven't yet parsed the expiration date (which
+ // usually appears at the end).
+ if (credit_card_field->cardholder_ == NULL) {
string16 name_pattern;
if (is_ecml) {
name_pattern = GetEcmlPattern(kEcmlCardHolder);
} else {
- if (fields == 0 || credit_card_field.expiration_month_) {
+ if (fields == 0 || credit_card_field->expiration_month_) {
// at beginning or end
name_pattern = ASCIIToUTF16("card holder|name on card|nameoncard");
} else {
@@ -67,7 +67,7 @@ CreditCardField* CreditCardField::Parse(
}
}
- if (ParseText(&q, name_pattern, &credit_card_field.cardholder_)) {
+ if (ParseText(&q, name_pattern, &credit_card_field->cardholder_)) {
continue;
}
@@ -79,8 +79,8 @@ CreditCardField* CreditCardField::Parse(
AutoFillField* first;
if (!is_ecml && ParseText(&p, ASCIIToUTF16("^cfnm"), &first) &&
ParseText(&p, ASCIIToUTF16("^clnm"),
- &credit_card_field.cardholder_last_)) {
- credit_card_field.cardholder_ = first;
+ &credit_card_field->cardholder_last_)) {
+ credit_card_field->cardholder_ = first;
q = p;
continue;
}
@@ -100,8 +100,8 @@ CreditCardField* CreditCardField::Parse(
"verification|card identification|cvn|security code|cvv code|cvc");
}
- if (credit_card_field.verification_ == NULL &&
- ParseText(&q, pattern, &credit_card_field.verification_)) {
+ if (credit_card_field->verification_ == NULL &&
+ ParseText(&q, pattern, &credit_card_field->verification_)) {
continue;
}
@@ -110,8 +110,8 @@ CreditCardField* CreditCardField::Parse(
else
pattern = ASCIIToUTF16("number|card #|card no.|card_number|card number");
- if (credit_card_field.number_ == NULL && ParseText(&q, pattern,
- &credit_card_field.number_))
+ if (credit_card_field->number_ == NULL && ParseText(&q, pattern,
+ &credit_card_field->number_))
continue;
// "Expiration date" is the most common label here, but some pages have
@@ -131,15 +131,15 @@ CreditCardField* CreditCardField::Parse(
else
pattern = ASCIIToUTF16("expir|exp.*month|exp date|ccmonth");
- if ((!credit_card_field.expiration_month_ ||
- credit_card_field.expiration_month_->IsEmpty()) &&
- ParseText(&q, pattern, &credit_card_field.expiration_month_)) {
+ if ((!credit_card_field->expiration_month_ ||
+ credit_card_field->expiration_month_->IsEmpty()) &&
+ ParseText(&q, pattern, &credit_card_field->expiration_month_)) {
if (is_ecml)
pattern = GetEcmlPattern(kEcmlCardExpireYear);
else
pattern = ASCIIToUTF16("|exp|^/|ccyear|year");
- if (!ParseText(&q, pattern, &credit_card_field.expiration_year_))
+ if (!ParseText(&q, pattern, &credit_card_field->expiration_year_))
return NULL;
continue;
@@ -162,11 +162,11 @@ CreditCardField* CreditCardField::Parse(
// On some pages, the user selects a card type using radio buttons
// (e.g. test page Apple Store Billing.html). We can't handle that yet,
// so we treat the card type as optional for now.
- if (credit_card_field.number_ &&
- credit_card_field.expiration_month_ &&
- credit_card_field.expiration_year_) {
+ if (credit_card_field->number_ &&
+ credit_card_field->expiration_month_ &&
+ credit_card_field->expiration_year_) {
*iter = q;
- return new CreditCardField(credit_card_field);
+ return credit_card_field.release();
}
return NULL;
@@ -181,14 +181,3 @@ CreditCardField::CreditCardField()
expiration_month_(NULL),
expiration_year_(NULL) {
}
-
-CreditCardField::CreditCardField(const CreditCardField& field)
- : FormField(),
- cardholder_(field.cardholder_),
- cardholder_last_(field.cardholder_last_),
- type_(field.type_),
- number_(field.number_),
- verification_(field.verification_),
- expiration_month_(field.expiration_month_),
- expiration_year_(field.expiration_year_) {
-}
diff --git a/chrome/browser/autofill/credit_card_field.h b/chrome/browser/autofill/credit_card_field.h
index cf3545e..581ab56 100644
--- a/chrome/browser/autofill/credit_card_field.h
+++ b/chrome/browser/autofill/credit_card_field.h
@@ -23,8 +23,6 @@ class CreditCardField : public FormField {
private:
CreditCardField();
- explicit CreditCardField(const CreditCardField& field);
- void operator=(const CreditCardField&);
AutoFillField* cardholder_; // Optional.
@@ -46,6 +44,8 @@ class CreditCardField : public FormField {
// Both required. TODO(jhawkins): Parse the select control.
AutoFillField* expiration_month_;
AutoFillField* expiration_year_;
+
+ DISALLOW_COPY_AND_ASSIGN(CreditCardField);
};
#endif // CHROME_BROWSER_AUTOFILL_CREDIT_CARD_FIELD_H_
diff --git a/chrome/browser/autofill/fax_field.cc b/chrome/browser/autofill/fax_field.cc
index de86e30..f935a6d 100644
--- a/chrome/browser/autofill/fax_field.cc
+++ b/chrome/browser/autofill/fax_field.cc
@@ -5,15 +5,16 @@
#include "chrome/browser/autofill/fax_field.h"
#include "base/logging.h"
+#include "base/scoped_ptr.h"
#include "chrome/browser/autofill/autofill_field.h"
// static
FaxField* FaxField::Parse(std::vector<AutoFillField*>::const_iterator* iter) {
DCHECK(iter);
- FaxField fax_field;
- if (ParseText(iter, ASCIIToUTF16("fax"), &fax_field.number_))
- return new FaxField(fax_field);
+ scoped_ptr<FaxField> fax_field(new FaxField);
+ if (ParseText(iter, ASCIIToUTF16("fax"), &fax_field->number_))
+ return fax_field.release();
return NULL;
}
@@ -23,8 +24,3 @@ bool FaxField::GetFieldInfo(FieldTypeMap* field_type_map) const {
}
FaxField::FaxField() : number_(NULL) {}
-
-FaxField::FaxField(const FaxField& fax_field)
- : FormField(),
- number_(fax_field.number_) {
-}
diff --git a/chrome/browser/autofill/fax_field.h b/chrome/browser/autofill/fax_field.h
index c8c1dab..b5c1eed 100644
--- a/chrome/browser/autofill/fax_field.h
+++ b/chrome/browser/autofill/fax_field.h
@@ -21,10 +21,11 @@ class FaxField : public FormField {
private:
FaxField();
- explicit FaxField(const FaxField& fax_field);
// The fax number field.
AutoFillField* number_;
+
+ DISALLOW_COPY_AND_ASSIGN(FaxField);
};
#endif // CHROME_BROWSER_AUTOFILL_FAX_FIELD_H_
diff --git a/chrome/browser/autofill/name_field.cc b/chrome/browser/autofill/name_field.cc
index 0eeb0c3..c11a018 100644
--- a/chrome/browser/autofill/name_field.cc
+++ b/chrome/browser/autofill/name_field.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/autofill/name_field.h"
+#include "base/scoped_ptr.h"
#include "base/string_util.h"
#include "chrome/browser/autofill/autofill_type.h"
@@ -39,23 +40,23 @@ FirstLastNameField* FirstLastNameField::Parse1(
std::vector<AutoFillField*>::const_iterator* iter) {
// Some pages (e.g. Overstock_comBilling.html, SmithsonianCheckout.html)
// have the label "Name" followed by two or three text fields.
- FirstLastNameField v;
+ scoped_ptr<FirstLastNameField> v(new FirstLastNameField);
std::vector<AutoFillField*>::const_iterator q = *iter;
AutoFillField* next;
- if (ParseText(&q, ASCIIToUTF16("^name"), &v.first_name_) &&
+ if (ParseText(&q, ASCIIToUTF16("^name"), &v->first_name_) &&
ParseEmptyText(&q, &next)) {
- if (ParseEmptyText(&q, &v.last_name_)) {
+ if (ParseEmptyText(&q, &v->last_name_)) {
// There are three name fields; assume that the middle one is a
// middle initial (it is, at least, on SmithsonianCheckout.html).
- v.middle_name_ = next;
- v.middle_initial_ = true;
+ v->middle_name_ = next;
+ v->middle_initial_ = true;
} else { // only two name fields
- v.last_name_ = next;
+ v->last_name_ = next;
}
*iter = q;
- return new FirstLastNameField(v);
+ return v.release();
}
return NULL;
@@ -63,7 +64,7 @@ FirstLastNameField* FirstLastNameField::Parse1(
FirstLastNameField* FirstLastNameField::Parse2(
std::vector<AutoFillField*>::const_iterator* iter) {
- FirstLastNameField v;
+ scoped_ptr<FirstLastNameField> v(new FirstLastNameField);
std::vector<AutoFillField*>::const_iterator q = *iter;
// A fair number of pages use the names "fname" and "lname" for naming
@@ -76,7 +77,7 @@ FirstLastNameField* FirstLastNameField::Parse2(
// The ".*first$" matches fields ending in "first" (example in sample8.html).
string16 match =
ASCIIToUTF16("first *name|first_name|initials|fname|.*first$");
- if (!ParseText(&q, match, &v.first_name_))
+ if (!ParseText(&q, match, &v->first_name_))
return NULL;
// We check for a middle initial before checking for a middle name
@@ -85,39 +86,39 @@ FirstLastNameField* FirstLastNameField::Parse2(
// "txtmiddlename"); such a field probably actually represents a
// middle initial.
match = ASCIIToUTF16("^mi$|middle initial|middleinitial|m.i.");
- if (ParseText(&q, match, &v.middle_name_)) {
- v.middle_initial_ = true;
+ if (ParseText(&q, match, &v->middle_name_)) {
+ v->middle_initial_ = true;
} else {
match = ASCIIToUTF16("middle *name|mname");
- ParseText(&q, match, &v.middle_name_);
+ ParseText(&q, match, &v->middle_name_);
}
// The ".*last$" matches fields ending in "last" (example in sample8.html).
match = ASCIIToUTF16("last *name|last_name|lname|surname|.*last$");
- if (!ParseText(&q, match, &v.last_name_))
+ if (!ParseText(&q, match, &v->last_name_))
return NULL;
*iter = q;
- return new FirstLastNameField(v);
+ return v.release();
}
FirstLastNameField* FirstLastNameField::ParseEcmlName(
std::vector<AutoFillField*>::const_iterator* iter) {
- FirstLastNameField field;
+ scoped_ptr<FirstLastNameField> field(new FirstLastNameField);
std::vector<AutoFillField*>::const_iterator q = *iter;
string16 pattern = GetEcmlPattern(kEcmlShipToFirstName,
kEcmlBillToFirstName, '|');
- if (!ParseText(&q, pattern, &field.first_name_))
+ if (!ParseText(&q, pattern, &field->first_name_))
return NULL;
pattern = GetEcmlPattern(kEcmlShipToMiddleName, kEcmlBillToMiddleName, '|');
- ParseText(&q, pattern, &field.middle_name_);
+ ParseText(&q, pattern, &field->middle_name_);
pattern = GetEcmlPattern(kEcmlShipToLastName, kEcmlBillToLastName, '|');
- if (ParseText(&q, pattern, &field.last_name_)) {
+ if (ParseText(&q, pattern, &field->last_name_)) {
*iter = q;
- return new FirstLastNameField(field);
+ return field.release();
}
return NULL;
@@ -157,10 +158,3 @@ FirstLastNameField::FirstLastNameField()
middle_initial_(false) {
}
-FirstLastNameField::FirstLastNameField(const FirstLastNameField& field)
- : NameField(),
- first_name_(field.first_name_),
- middle_name_(field.middle_name_),
- last_name_(field.last_name_),
- middle_initial_(field.middle_initial_) {
-}
diff --git a/chrome/browser/autofill/name_field.h b/chrome/browser/autofill/name_field.h
index 5709c12..5d6e4e5 100644
--- a/chrome/browser/autofill/name_field.h
+++ b/chrome/browser/autofill/name_field.h
@@ -59,13 +59,13 @@ class FirstLastNameField : public NameField {
private:
FirstLastNameField();
- explicit FirstLastNameField(const FirstLastNameField& field);
- void operator=(const FirstLastNameField& field);
AutoFillField* first_name_;
AutoFillField* middle_name_; // Optional.
AutoFillField* last_name_;
bool middle_initial_; // True if middle_name_ is a middle initial.
+
+ DISALLOW_COPY_AND_ASSIGN(FirstLastNameField);
};
#endif // CHROME_BROWSER_AUTOFILL_NAME_FIELD_H_
diff --git a/chrome/browser/autofill/phone_field.cc b/chrome/browser/autofill/phone_field.cc
index f67d6e2..16df07f 100644
--- a/chrome/browser/autofill/phone_field.cc
+++ b/chrome/browser/autofill/phone_field.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/autofill/phone_field.h"
#include "base/logging.h"
+#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "base/string_util.h"
#include "chrome/browser/autofill/autofill_field.h"
@@ -55,26 +56,26 @@ PhoneField* PhoneField::Parse(std::vector<AutoFillField*>::const_iterator* iter,
// Now we have one, two, or three phone number text fields. Package them
// up into a PhoneField object.
- PhoneField phone_field;
+ scoped_ptr<PhoneField> phone_field(new PhoneField);
if (phone2 == NULL) { // only one field
if (area_code) // it's an area code
return NULL; // doesn't make sense
- phone_field.phone_ = phone;
+ phone_field->phone_ = phone;
} else {
- phone_field.area_code_ = phone;
+ phone_field->area_code_ = phone;
if (phone3 == NULL) { // two fields
- phone_field.phone_ = phone2;
+ phone_field->phone_ = phone2;
} else { // three boxes: area code, prefix and suffix
- phone_field.prefix_ = phone2;
- phone_field.phone_ = phone3;
+ phone_field->prefix_ = phone2;
+ phone_field->phone_ = phone3;
}
}
// Now look for an extension.
- ParseText(&q, ASCIIToUTF16("ext"), &phone_field.extension_);
+ ParseText(&q, ASCIIToUTF16("ext"), &phone_field->extension_);
*iter = q;
- return new PhoneField(phone_field);
+ return phone_field.release();
}
// static
@@ -130,11 +131,3 @@ PhoneField::PhoneField()
prefix_(NULL),
extension_(NULL) {
}
-
-PhoneField::PhoneField(const PhoneField& phone_field)
- : FormField(),
- phone_(phone_field.phone_),
- area_code_(phone_field.area_code_),
- prefix_(phone_field.prefix_),
- extension_(phone_field.extension_) {
-}
diff --git a/chrome/browser/autofill/phone_field.h b/chrome/browser/autofill/phone_field.h
index 72c5c2f..6a3c934 100644
--- a/chrome/browser/autofill/phone_field.h
+++ b/chrome/browser/autofill/phone_field.h
@@ -25,17 +25,17 @@ class PhoneField : public FormField {
virtual bool GetFieldInfo(FieldTypeMap* field_type_map) const;
- protected:
+ private:
PhoneField();
- explicit PhoneField(const PhoneField& phone_field);
- private:
// Always present; holds suffix if prefix is present.
AutoFillField* phone_;
AutoFillField* area_code_; // optional
AutoFillField* prefix_; // optional
AutoFillField* extension_; // optional
+
+ DISALLOW_COPY_AND_ASSIGN(PhoneField);
};
#endif // CHROME_BROWSER_AUTOFILL_PHONE_FIELD_H_