Bug 1413110 - [Form Autofill] Skip tombstones when migrating records and computing fields. r=steveck

MozReview-Commit-ID: JEsXVjsCoYc

--HG--
extra : rebase_source : 2352948654a8c2ae027a2f56fc87867575b16d39
This commit is contained in:
Luke Chang 2017-10-31 15:58:35 +08:00
Родитель 6a561c1f1f
Коммит ad2cdd6f16
2 изменённых файлов: 46 добавлений и 0 удалений

Просмотреть файл

@ -1116,6 +1116,10 @@ class AutofillRecords {
_migrateRecord(record) {
let hasChanges = false;
if (record.deleted) {
return hasChanges;
}
if (!record.version || isNaN(record.version) || record.version < 1) {
this.log.warn("Invalid record version:", record.version);
@ -1196,6 +1200,10 @@ class Addresses extends AutofillRecords {
let hasNewComputedFields = false;
if (address.deleted) {
return hasNewComputedFields;
}
// Compute name
if (!("name" in address)) {
let name = FormAutofillNameUtils.joinNameParts({
@ -1459,6 +1467,10 @@ class CreditCards extends AutofillRecords {
let hasNewComputedFields = false;
if (creditCard.deleted) {
return hasNewComputedFields;
}
// Compute split names
if (!("cc-given-name" in creditCard)) {
let nameParts = FormAutofillNameUtils.splitName(creditCard["cc-name"]);

Просмотреть файл

@ -101,6 +101,23 @@ const ADDRESS_TESTCASES = [
name: "Timothy",
},
},
{
description: "The migration shouldn't be invoked on tombstones.",
record: {
guid: "test-guid",
timeLastModified: 12345,
deleted: true,
},
expectedResult: {
guid: "test-guid",
timeLastModified: 12345,
deleted: true,
// Make sure no new fields are appended.
version: undefined,
name: undefined,
},
},
];
const CREDIT_CARD_TESTCASES = [
@ -194,6 +211,23 @@ const CREDIT_CARD_TESTCASES = [
"cc-given-name": "Timothy",
},
},
{
description: "The migration shouldn't be invoked on tombstones.",
record: {
guid: "test-guid",
timeLastModified: 12345,
deleted: true,
},
expectedResult: {
guid: "test-guid",
timeLastModified: 12345,
deleted: true,
// Make sure no new fields are appended.
version: undefined,
"cc-given-name": undefined,
},
},
];
let do_check_record_matches = (expectedRecord, record) => {