<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>CSS Transitions Test: transitionend event with property specificity</title>
<meta name="assert" content="Test checks that property specificity is properly resolved">
<link rel="help" title="2.1. The 'transition-property' Property" href="http://www.w3.org/TR/css3-transitions/#transition-property-property">
<link rel="help" title="5. Transition Events" href="http://www.w3.org/TR/css3-transitions/#transition-events">
<link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/">

<script src="/resources/testharness.js" type="text/javascript"></script>
<script src="/resources/testharnessreport.js" type="text/javascript"></script>
<script src="./support/helper.js" type="text/javascript"></script>

</head>
<body>

<div id="log"></div>

<script>
promise_test(t => {
  const div = addDiv(t, {
    style:
      'transition: padding-left .01s, padding-left .02s;' +
      'padding-left: 1px'
  });
  getComputedStyle(div).paddingLeft;
  div.style.paddingLeft = '10px';

  const watcher = new EventWatcher(t, div, [ 'transitionend' ]);
  return watcher.wait_for('transitionend').then(evt => {
    assert_end_events_equal(evt, 'padding-left', 0.02);
  });
}, 'property repetition');

promise_test(t => {
  const div = addDiv(t, {
    style:
      'transition: padding .01s, padding-left .02s;' +
      'padding-left: 1px'
  });
  getComputedStyle(div).paddingLeft;
  div.style.paddingLeft = '10px';

  const watcher = new EventWatcher(t, div, [ 'transitionend' ]);
  return watcher.wait_for('transitionend').then(evt => {
    assert_end_events_equal(evt, 'padding-left', 0.02);
  });
}, 'padding, padding-left');

promise_test(t => {
  const div = addDiv(t, {
    style:
      'transition: padding-left .01s, padding .02s;' +
      'padding-left: 1px'
  });
  getComputedStyle(div).paddingLeft;
  div.style.paddingLeft = '10px';

  const watcher = new EventWatcher(t, div, [ 'transitionend' ]);
  return watcher.wait_for('transitionend').then(evt => {
    assert_end_events_equal(evt, 'padding-left', 0.02);
  });
}, 'padding-left, padding');
</script>
</body>
</html>
