| <!doctype html> | 
 | <title>CSSOM test: no side effects from setting "height"</title> | 
 | <link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty"> | 
 | <link rel="help" href="https://bugs.webkit.org/show_bug.cgi?id=107380"> | 
 | <script src="/resources/testharness.js"></script> | 
 | <script src="/resources/testharnessreport.js"></script> | 
 |  | 
 | <p> | 
 | Historically, the Apple Safari web browser has added an "intrinsic margin" to | 
 | form controls which do not specify a `height`. It removed this margin following | 
 | modification of the `height`. <a | 
 | href="https://bugs.webkit.org/show_bug.cgi?id=107380">This non-standard | 
 | behavior was identified as a source of confusion for web developers.</a> | 
 | </p> | 
 |  | 
 | <script> | 
 | function makeElement(tagName) { | 
 |   var element = document.createElement(tagName); | 
 |   document.body.appendChild(element); | 
 |   return element; | 
 | } | 
 | function makeInputElement(type) { | 
 |   var element = makeElement('input'); | 
 |   element.setAttribute('type', type); | 
 |   return element; | 
 | } | 
 | function measure(element) { | 
 |   var computed = getComputedStyle(element); | 
 |   return [computed.marginTop, computed.marginBottom]; | 
 | } | 
 |  | 
 | test(function() { | 
 |   var element = makeInputElement('text'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'text input element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeInputElement('button'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'button input element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeInputElement('submit'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'submit input element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeInputElement('radio'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'radio input element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeInputElement('checkbox'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'checkbox input element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeElement('textarea'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'textarea element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeElement('select'); | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'select element'); | 
 |  | 
 | test(function() { | 
 |   var element = makeElement('button') | 
 |   var initial = measure(element); | 
 |  | 
 |   element.style.setProperty('height', '12px'); | 
 |  | 
 |   assert_array_equals(measure(element), initial); | 
 | }, 'button element'); | 
 | </script> |