| <!DOCTYPE html> | 
 | <html> | 
 | <title>Tests various ways to call cancelWatchAvailability()</title> | 
 | <script src="/resources/testharness.js"></script> | 
 | <script src="/resources/testharnessreport.js"></script> | 
 | <script src="/common/media.js"></script> | 
 | <script> | 
 | async_test(t => { | 
 |  var v = document.createElement('video'); | 
 |  v.src = getVideoURI('/media/movie_5'); | 
 |  | 
 |  v.remote.watchAvailability(function() {}) | 
 |  .then(t.step_func(id => { | 
 |  v.remote.cancelWatchAvailability(id).then(t.step_func(function() { | 
 |  v.remote.cancelWatchAvailability(id).then( | 
 |  t.unreached_func(), t.step_func_done(e => { | 
 |  assert_equals(e.name, 'NotFoundError'); | 
 |  }) | 
 |  ); | 
 |  }), t.unreached_func()); | 
 |  }), t.unreached_func()); | 
 | }, 'Test that calling cancelWatchAvailability() with an id does remove the callback.'); | 
 |  | 
 | async_test(t => { | 
 |  var v = document.createElement('video'); | 
 |  v.src = getVideoURI('/media/movie_5'); | 
 |  | 
 |  Promise.all([ | 
 |  v.remote.watchAvailability(function() {}), | 
 |  v.remote.watchAvailability(function() {}) | 
 |  ]).then(t.step_func(ids => { | 
 |  v.remote.cancelWatchAvailability().then(t.step_func(function() { | 
 |  v.remote.cancelWatchAvailability(ids[0]).then(t.unreached_func(), t.step_func(function(e) { | 
 |  assert_equals(e.name, 'NotFoundError'); | 
 |  v.remote.cancelWatchAvailability(ids[1]) | 
 |  .then(t.unreached_func(), t.step_func_done(function(e) { | 
 |  assert_equals(e.name, 'NotFoundError'); | 
 |  })); | 
 |  })); | 
 |  }), t.unreached_func()); | 
 |  }), t.unreached_func()); | 
 | }, 'Test that calling cancelWatchAvailability() without an id removes all the callbacks.'); | 
 | </script> | 
 | </html> |