<!DOCTYPE html><!-- webkit-test-runner [ enableKeygenElement=true ] -->
<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<script>
var element;

function testDOMStringReflection(elementName, contentAttributeName, idlAttributeName) {
    idlAttributeName = idlAttributeName || contentAttributeName;
    element = document.createElement(elementName);
    debug('Reflected DOMString attribute test for ' + elementName + '/@' + contentAttributeName);
    debug('Initial value:');
    shouldBeEqualToString('element.' + idlAttributeName, '');
    shouldBeNull('element.getAttribute("' + contentAttributeName + '")');

    debug('Setting a value via the IDL attribute:');
    shouldBeEqualToString('element.' + idlAttributeName + ' = "foo"; element.' + idlAttributeName, 'foo');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', 'foo');

    debug('Setting a value via the content attribute:');
    shouldBeEqualToString('element.setAttribute("' + contentAttributeName + '", " bar\\n"); element.' + idlAttributeName, ' bar\n');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', ' bar\n');

    debug('Setting null via the IDL attribute:');
    shouldBeEqualToString('element.' + idlAttributeName + ' = null; element.' + idlAttributeName, 'null');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', 'null');

    debug('Setting null via the content attribute:');
    shouldBeEqualToString('element.setAttribute("' + contentAttributeName + '", null); element.' + idlAttributeName, 'null');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', 'null');

    debug('Setting undefined via the IDL attribute:');
    shouldBeEqualToString('element.' + idlAttributeName + ' = undefined; element.' + idlAttributeName, 'undefined');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', 'undefined');

    debug('Setting undefined via the content attribute:');
    shouldBeEqualToString('element.setAttribute("' + contentAttributeName + '", undefined); element.' + idlAttributeName, 'undefined');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', 'undefined');

    debug('Setting non-string via the IDL attribute:');
    shouldBeEqualToString('element.' + idlAttributeName + ' = 123; element.' + idlAttributeName, '123');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', '123');

    debug('Setting non-string via the content attribute:');
    shouldBeEqualToString('element.setAttribute("' + contentAttributeName + '", 456); element.' + idlAttributeName, '456');
    shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', '456');

    debug('\n');
}

testDOMStringReflection('button', 'name');
testDOMStringReflection('fieldset', 'name');
testDOMStringReflection('form', 'name');
testDOMStringReflection('input', 'name');
testDOMStringReflection('input', 'step');
testDOMStringReflection('keygen', 'name');
testDOMStringReflection('object', 'name');
testDOMStringReflection('output', 'name');
testDOMStringReflection('select', 'name');
testDOMStringReflection('textarea', 'name');

// Add more DOMString attributes!

</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
