1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
"use strict";
const TESTCASES = [
{
description: "Form containing 8 fields with autocomplete attribute.",
document: `<form>
<input id="given-name" autocomplete="given-name">
<input id="additional-name" autocomplete="additional-name">
<input id="family-name" autocomplete="family-name">
<input id="street-addr" autocomplete="street-address">
<input id="city" autocomplete="address-level2">
<input id="country" autocomplete="country">
<input id="email" autocomplete="email">
<input id="tel" autocomplete="tel">
<input id="without-autocomplete-1">
<input id="without-autocomplete-2">
</form>`,
targetElementId: "given-name",
expectedResult: [
"given-name",
"additional-name",
"family-name",
"street-addr",
"city",
"country",
"email",
"tel",
],
},
{
description: "Form containing only 2 fields with autocomplete attribute.",
document: `<form>
<input id="street-addr" autocomplete="street-address">
<input id="city" autocomplete="address-level2">
<input id="without-autocomplete-1">
<input id="without-autocomplete-2">
</form>`,
targetElementId: "street-addr",
expectedResult: [],
},
{
description: "Fields without form element.",
document: `<input id="street-addr" autocomplete="street-address">
<input id="city" autocomplete="address-level2">
<input id="country" autocomplete="country">
<input id="email" autocomplete="email">
<input id="tel" autocomplete="tel">
<input id="without-autocomplete-1">
<input id="without-autocomplete-2">`,
targetElementId: "street-addr",
expectedResult: ["street-addr", "city", "country", "email", "tel"],
},
];
let markedFieldId = [];
var FormAutofillContent;
add_task(async function setup() {
({ FormAutofillContent } = ChromeUtils.import(
"resource://formautofill/FormAutofillContent.jsm"
));
FormAutofillContent._markAsAutofillField = function(field) {
markedFieldId.push(field.id);
};
});
TESTCASES.forEach(testcase => {
add_task(async function() {
info("Starting testcase: " + testcase.description);
markedFieldId = [];
let doc = MockDocument.createTestDocument(
"http://localhost:8080/test/",
testcase.document
);
let element = doc.getElementById(testcase.targetElementId);
FormAutofillContent.identifyAutofillFields(element);
Assert.deepEqual(
markedFieldId,
testcase.expectedResult,
"Check the fields were marked correctly."
);
});
});
|