<!doctype html> <html> <head> <meta charset='utf-8'> <title>Revoking a created URL with URL.revokeObjectURL(url)</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> <body> <div id="log"></div> <script> async_test(function(t) { var mediaSource = new MediaSource(); var url = window.URL.createObjectURL(mediaSource); window.URL.revokeObjectURL(url); mediaSource.addEventListener('sourceopen', t.unreached_func("url should not reference MediaSource.")); var video = document.createElement('video'); video.src = url; video.addEventListener('error', t.step_func_done(function(e) { assert_equals(e.target.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED, 'Expected error code'); assert_equals(mediaSource.readyState, 'closed'); })); }, "Check revoking behavior of URL.revokeObjectURL(url)."); async_test(function(t) { var mediaSource = new MediaSource(); var url = window.URL.createObjectURL(mediaSource); var video = document.createElement('video'); var unexpectedErrorHandler = t.unreached_func("Unexpected error.") video.addEventListener('error', unexpectedErrorHandler); video.src = url; window.URL.revokeObjectURL(url); mediaSource.addEventListener('sourceopen', t.step_func_done(function(e) { assert_equals(mediaSource.readyState, 'open'); mediaSource.endOfStream(); video.removeEventListener('error', unexpectedErrorHandler); })); }, "Check referenced MediaSource can open after URL.revokeObjectURL(url)."); async_test(function(t) { var mediaSource = new MediaSource(); var url = window.URL.createObjectURL(mediaSource); setTimeout(function() { mediaSource.addEventListener('sourceopen', t.unreached_func("url should not reference MediaSource.")); var video = document.createElement('video'); video.src = url; video.addEventListener('error', t.step_func_done(function(e) { assert_equals(e.target.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED, 'Expected error code'); assert_equals(mediaSource.readyState, 'closed'); })); }, 0); }, "Check auto-revoking behavior with URL.createObjectURL(MediaSource)."); </script> </body> </html>