Home | History | Annotate | Download | only in js
      1 suite('player-finish-event', function() {
      2   setup(function() {
      3     this.element = document.createElement('div');
      4     document.documentElement.appendChild(this.element);
      5     this.player = this.element.animate([], 1000);
      6   });
      7   teardown(function() {
      8     if (this.element.parent)
      9       this.element.removeChild(this.target);
     10   });
     11 
     12   test('fire when player completes', function(done) {
     13     var ready = false;
     14     var fired = false;
     15     var player = this.player;
     16     player.onfinish = function(event) {
     17       assert(ready, 'must not be called synchronously');
     18       assert.equal(this, player);
     19       assert.equal(event.target, player);
     20       assert.equal(event.currentTime, 1000);
     21       assert.equal(event.timelineTime, 1100);
     22       if (fired)
     23         assert(false, 'must not get fired twice');
     24       fired = true;
     25       done();
     26     };
     27     tick(100);
     28     tick(1100);
     29     tick(2100);
     30     ready = true;
     31   });
     32 
     33   test('fire when reversed player completes', function(done) {
     34     this.player.onfinish = function(event) {
     35       assert.equal(event.currentTime, 0);
     36       assert.equal(event.timelineTime, 1001);
     37       done();
     38     };
     39     tick(0);
     40     tick(500);
     41     this.player.reverse();
     42     tick(501);
     43     tick(1001);
     44   });
     45 
     46   test('fire after player is cancelled', function(done) {
     47     this.player.onfinish = function(event) {
     48       assert.equal(event.currentTime, 0);
     49       assert.equal(event.timelineTime, 1, 'event must be fired on next sample');
     50       done();
     51     };
     52     tick(0);
     53     this.player.cancel();
     54     tick(1);
     55   });
     56 
     57   test('multiple event listeners', function(done) {
     58     var count = 0;
     59     function createHandler(expectedCount) {
     60       return function() {
     61         count++;
     62         assert.equal(count, expectedCount);
     63       };
     64     }
     65     var toRemove = createHandler(0);
     66     this.player.addEventListener('finish', createHandler(1));
     67     this.player.addEventListener('finish', createHandler(2));
     68     this.player.addEventListener('finish', toRemove);
     69     this.player.addEventListener('finish', createHandler(3));
     70     this.player.removeEventListener('finish', toRemove);
     71     this.player.onfinish = function() {
     72       assert.equal(count, 3);
     73       done();
     74     };
     75     tick(0);
     76     this.player.cancel();
     77     tick(1000);
     78   });
     79 });
     80