diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-21 03:41:29 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-21 03:41:29 +0000 |
commit | d78ef705947b6f3bb52aa10cdf3ed21b579bf507 (patch) | |
tree | af16a66705dcab124b7ad7847eb38e7d222c21c9 /chrome | |
parent | 53aacae5fea0264040b0d0a5cdd40e202527b80d (diff) | |
download | chromium_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.cc | 45 | ||||
-rw-r--r-- | chrome/browser/autofill/address_field.h | 4 | ||||
-rw-r--r-- | chrome/browser/autofill/autofill_field.h | 2 | ||||
-rw-r--r-- | chrome/browser/autofill/credit_card_field.cc | 61 | ||||
-rw-r--r-- | chrome/browser/autofill/credit_card_field.h | 4 | ||||
-rw-r--r-- | chrome/browser/autofill/fax_field.cc | 12 | ||||
-rw-r--r-- | chrome/browser/autofill/fax_field.h | 3 | ||||
-rw-r--r-- | chrome/browser/autofill/name_field.cc | 46 | ||||
-rw-r--r-- | chrome/browser/autofill/name_field.h | 4 | ||||
-rw-r--r-- | chrome/browser/autofill/phone_field.cc | 25 | ||||
-rw-r--r-- | chrome/browser/autofill/phone_field.h | 6 |
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_ |