<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- webkit-test-runner [ KeygenElementEnabled=true ] -->
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="../resources/common.js"></script>
<script src="../resources/label-test-util.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description('Test that the labels list of a form control is dynamically updated when adding a label whose htmlFor points to that control. ');

var tester = setupLabelsTest();
for (var name in tester.dataSet) {
    var data = tester.getLabelableElementData(name);
    if (data == null)
        continue;

    debug('Check ' + data.name);
    var element = data.element;
    shouldBe('element.labels.length', '0');

    var label = document.createElement("label");
    label.htmlFor = element.id;
    tester.outerElement.appendChild(label);
    shouldBe('element.labels.length', '1');
}
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
