Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(340)

Unified Diff: chrome/browser/autofill/phone_number.h

Issue 6877130: These changes *are* for review :) (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autofill/phone_number.h
===================================================================
--- chrome/browser/autofill/phone_number.h (revision 85791)
+++ chrome/browser/autofill/phone_number.h (working copy)
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_AUTOFILL_PHONE_NUMBER_H_
#pragma once
+#include <string>
#include <vector>
#include "base/gtest_prod_util.h"
@@ -17,7 +18,8 @@
class PhoneNumber : public FormGroup {
public:
PhoneNumber();
- explicit PhoneNumber(const PhoneNumber& number);
+ explicit PhoneNumber(AutofillType::FieldTypeGroup phone_group);
+ PhoneNumber(const PhoneNumber& number);
virtual ~PhoneNumber();
PhoneNumber& operator=(const PhoneNumber& number);
@@ -29,15 +31,9 @@
virtual string16 GetInfo(AutofillFieldType type) const;
virtual void SetInfo(AutofillFieldType type, const string16& value);
- // Parses |value| to extract the components of a phone number. |number|
- // returns the trailing 7 digits, |city_code| returns the next 3 digits, and
- // |country_code| returns any remaining digits.
- // Separator characters are stripped before parsing the digits.
- // Returns true if parsing was successful, false otherwise.
- static bool ParsePhoneNumber(const string16& value,
- string16* number,
- string16* city_code,
- string16* country_code);
+ // Validates |number_| and translates it into digits-only format.
+ // Locale must be set.
+ bool NormalizePhone();
// Size and offset of the prefix and suffix portions of phone numbers.
static const int kPrefixOffset = 0;
@@ -45,51 +41,60 @@
static const int kSuffixOffset = 3;
static const int kSuffixLength = 4;
+ // Sets locale for normalizing phone numbers. Must be called if you get
+ // normalized number or use NormalizePhone() function;
+ // Setting it to "", actually sets it to default locale - "US".
+ void set_locale(const std::string& locale);
+
// The following functions should return the field type for each part of the
// phone number. Currently, these are either fax or home phone number types.
- virtual AutofillFieldType GetNumberType() const = 0;
- virtual AutofillFieldType GetCityCodeType() const = 0;
- virtual AutofillFieldType GetCountryCodeType() const = 0;
- virtual AutofillFieldType GetCityAndNumberType() const = 0;
- virtual AutofillFieldType GetWholeNumberType() const = 0;
+ AutofillFieldType GetNumberType() const;
+ AutofillFieldType GetCityCodeType() const;
+ AutofillFieldType GetCountryCodeType() const;
+ AutofillFieldType GetCityAndNumberType() const;
+ AutofillFieldType GetWholeNumberType() const;
+ // The class used to combine home phone or fax parts into a whole number.
+ class PhoneCombineHelper {
+ public:
+ explicit PhoneCombineHelper(AutofillType::FieldTypeGroup phone_group)
+ : phone_group_(phone_group) { }
+ // Sets PHONE_HOME/FAX_CITY_CODE, PHONE_HOME/FAX_COUNTRY_CODE,
+ // PHONE_HOME/FAX_CITY_AND_NUMBER, PHONE_HOME/FAX_NUMBER and returns true.
+ // For all other field types returs false.
+ bool SetInfo(AutofillFieldType type, const string16& value);
+ // Returns true if parsing was successful, false otherwise.
+ bool ParseNumber(const std::string& locale, string16* value);
+
+ bool empty() const { return phone_.empty(); }
+ private:
+ string16 country_;
+ string16 city_;
+ string16 phone_;
+ AutofillType::FieldTypeGroup phone_group_;
+ };
+
private:
FRIEND_TEST_ALL_PREFIXES(PhoneNumberTest, Matcher);
- const string16& country_code() const { return country_code_; }
- const string16& city_code() const { return city_code_; }
const string16& number() const { return number_; }
const string16& extension() const { return extension_; }
- string16 CityAndNumber() const { return city_code_ + number_; }
- // Returns the entire phone number as a string, without punctuation.
- virtual string16 WholeNumber() const;
-
- void set_country_code(const string16& country_code) {
- country_code_ = country_code;
- }
- void set_city_code(const string16& city_code) { city_code_ = city_code; }
void set_number(const string16& number);
void set_extension(const string16& extension) { extension_ = extension; }
- void set_whole_number(const string16& whole_number);
// The numbers will be digits only (no punctuation), so any call to the IsX()
// functions should first call StripPunctuation on the text.
- bool IsNumber(const string16& text) const;
- bool IsCityCode(const string16& text) const;
- bool IsCountryCode(const string16& text) const;
- bool IsCityAndNumber(const string16& text) const;
+ bool IsNumber(const string16& text, const string16& number) const;
bool IsWholeNumber(const string16& text) const;
- // Verifies that |number| is a valid phone number.
- bool Validate(const string16& number) const;
-
- // Removes any punctuation characters from |number|.
static void StripPunctuation(string16* number);
+ // Phone group - currently it is PHONE_HOME and PHONE_FAX.
+ AutofillType::FieldTypeGroup phone_group_;
+ // Locale for phone normalizing.
+ std::string locale_;
// The pieces of the phone number.
- string16 country_code_;
- string16 city_code_; // city or area code.
string16 number_;
string16 extension_;
};

Powered by Google App Engine
This is Rietveld 408576698