<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>CSS Transitions Test: transitionend event for implied property value</title>
<meta name="assert" content="Test checks that all transitionend events are triggered for implied property value">
<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: all .01s linear' });
  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.01);
  });
}, 'transition:all changing padding-left from nothing');

promise_test(t => {
  const div = addDiv(t, { style: 'transition: all .01s linear' });
  getComputedStyle(div).paddingLeft;
  div.style.padding = '10px';

  const watcher = new EventWatcher(t, div, [ 'transitionend' ]);
  return watcher.wait_for(Array(4).fill('transitionend'),
                          { record: 'all' }).then(evts => {
    assert_end_event_batch_equal(evts,
                                 [ 'padding-bottom',
                                   'padding-left',
                                   'padding-right',
                                   'padding-top' ],
                                 0.01);
  });
}, 'transition:all changing padding from nothing');
</script>
</body>
</html>
