| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../resources/js-test.js"></script> |
| <script> |
| var element; |
| |
| function testDOMStringReflection(elementName, contentAttributeName, idlAttributeName, treatNullAsEmptyString) { |
| 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:'); |
| if (treatNullAsEmptyString) { |
| shouldBeEqualToString('element.' + idlAttributeName + ' = null; element.' + idlAttributeName, ''); |
| shouldBeEqualToString('element.getAttribute("' + contentAttributeName + '")', ''); |
| } else { |
| 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('object', 'name'); |
| testDOMStringReflection('output', 'name'); |
| testDOMStringReflection('select', 'name'); |
| testDOMStringReflection('textarea', 'name'); |
| |
| // [TreatNullAs=EmptyString] |
| testDOMStringReflection('frame', 'marginheight', 'marginHeight', true); |
| testDOMStringReflection('frame', 'marginwidth', 'marginWidth', true); |
| testDOMStringReflection('iframe', 'marginheight', 'marginHeight', true); |
| testDOMStringReflection('iframe', 'marginwidth', 'marginWidth', true); |
| testDOMStringReflection('body', 'text', 'text', true); |
| testDOMStringReflection('body', 'link', 'link', true); |
| testDOMStringReflection('body', 'alink', 'aLink', true); |
| testDOMStringReflection('body', 'vlink', 'vLink', true); |
| testDOMStringReflection('body', 'bgcolor', 'bgColor', true); |
| testDOMStringReflection('font', 'color', 'color', true); |
| testDOMStringReflection('img', 'border', 'border', true); |
| testDOMStringReflection('object', 'border', 'border', true); |
| testDOMStringReflection('table', 'bgcolor', 'bgColor', true); |
| testDOMStringReflection('table', 'cellpadding', 'cellPadding', true); |
| testDOMStringReflection('table', 'cellspacing', 'cellSpacing', true); |
| testDOMStringReflection('td', 'bgcolor', 'bgColor', true); |
| testDOMStringReflection('th', 'bgcolor', 'bgColor', true); |
| testDOMStringReflection('tr', 'bgcolor', 'bgColor', true); |
| |
| |
| // Add more DOMString attributes! |
| |
| </script> |
| </body> |
| </html> |