<!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>
