| <!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> |