Bug 874501 - Don't translate letters to numbers when finding contacts. r=bent

--HG--
extra : rebase_source : 5d5a6904aea2430c0521fa6ca3d898c5ce3ab6b2
This commit is contained in:
Reuben Morais 2013-05-28 15:38:11 -07:00
parent 45004d7b0f
commit 461f6e8462
2 changed files with 13 additions and 9 deletions

View File

@ -839,7 +839,8 @@ ContactDB.prototype = {
let index = store.index(key);
let filterValue = options.filterValue;
if (key == "tel") {
filterValue = PhoneNumberUtils.normalize(filterValue);
filterValue = PhoneNumberUtils.normalize(filterValue,
/*numbersOnly*/ true);
}
request = index.mozGetAll(filterValue, limit);
} else if (options.filterOp == "match") {
@ -850,13 +851,14 @@ ContactDB.prototype = {
}
let index = store.index("telMatch");
let normalized = PhoneNumberUtils.normalize(options.filterValue)
let normalized = PhoneNumberUtils.normalize(options.filterValue,
/*numbersOnly*/ true);
request = index.mozGetAll(normalized, limit);
} else {
// not case sensitive
let tmp = options.filterValue.toString().toLowerCase();
if (key === 'tel') {
tmp = PhoneNumberUtils.normalize(tmp);
if (key === "tel") {
tmp = PhoneNumberUtils.normalize(tmp, /*numbersOnly*/ true);
}
let range = this._global.IDBKeyRange.bound(tmp, tmp + "\uFFFF");
let index = store.index(key + "LowerCase");

View File

@ -239,7 +239,7 @@ this.PhoneNumber = (function (dataBase) {
// Normalize a number by converting unicode numbers and symbols to their
// ASCII equivalents and removing all non-dialable characters.
function NormalizeNumber(number) {
function NormalizeNumber(number, numbersOnly) {
if (typeof number !== 'string') {
return '';
}
@ -248,10 +248,12 @@ this.PhoneNumber = (function (dataBase) {
function (ch) {
return String.fromCharCode(48 + (ch.charCodeAt(0) & 0xf));
});
number = number.replace(VALID_ALPHA_PATTERN,
function (ch) {
return String(E161[ch.toLowerCase()] || 0);
});
if (!numbersOnly) {
number = number.replace(VALID_ALPHA_PATTERN,
function (ch) {
return String(E161[ch.toLowerCase()] || 0);
});
}
number = number.replace(LEADING_PLUS_CHARS_PATTERN, "+");
number = number.replace(NON_DIALABLE_CHARS, "");
return number;