[Forms] Re-factor label.for tests for extending test coverage
[WebKit-https.git] / LayoutTests / fast / forms / resources / label-test-util.js
1 // This file contains functions for testing the label element.
2
3 var withNoLabel = 0;
4 var withParentLabel = 1;
5 var withSiblingLabel = 2;
6 var withSibling2Label = 4;
7
8 // Populate dom tree and returns test data.
9 function setupLabelsTest(labelRelation, preHtml, postHtml)
10 {
11     var html = '<div id="div1"></div><div id="div2">';
12     if (preHtml)
13         html += preHtml;
14
15     var dataSet = createFormControlDataSet();
16
17     for (var name in dataSet) {
18         var data = dataSet[name];
19         var id = data.name + '1';
20         data.id = id;
21
22         if (labelRelation & withParentLabel)
23             html += '<label>';
24
25         if (labelRelation & withSiblingLabel) {
26             data.labelId = id + 'Label1';
27             html += '<label for=' + id + ' id=' + data.labelId + '></label>';
28         }
29
30         if (labelRelation & withSibling2Label) {
31             data.labelId2 = id + 'Label2';
32             html += '<label for=' + id + ' id=' + data.labelId2 + '></label>';
33         }
34
35         if (data.inputType) {
36             var typeName = data.inputType;
37             html += '<input type=' + typeName + ' id=' + id + '>';
38         } else {
39             var tagName = data.tagName;
40             html += '<' + tagName + ' id=' + id + '></' + tagName + '>';
41         }
42
43         if (labelRelation & withParentLabel)
44             html += '</label>';
45     }
46
47     if (postHtml)
48         html += postHtml;
49
50     html += '</div>';
51
52     var parent = document.createElement('div');
53     parent.innerHTML = html;
54     document.body.appendChild(parent);
55
56     for (var name in dataSet) {
57         var data = dataSet[name];
58         data.element = document.getElementById(data.id);
59     }
60
61     return {
62         dataSet: dataSet,
63
64         getLabelableElementData: function (name)
65         {
66             var data = dataSet[name];
67             return data && data.element.labels ? data : null;
68         },
69
70         outerElement: document.getElementById('div1'),
71     };
72 }