OLD | NEW |
---|---|
(Empty) | |
1 <title>Mixed range responses must be handled as an error.</title> | |
2 <script src="../resources/testharness.js"></script> | |
3 <script src="../resources/testharnessreport.js"></script> | |
4 <script src="../resources/get-host-info.js"></script> | |
5 <script src="../../media-resources/media-file.js"></script> | |
6 <body> | |
7 <script> | |
8 // This file tests the following behavior: | |
9 // 1. The audio element sends the first request. | |
10 // 2. mixed-range-response.php returns the first 3 bytes ("Ogg"). | |
11 // 3. The element sends the second request with "Range: bytes=3-" header. | |
12 // 4. mixed-range-response.php returns 206 response. | |
13 // 5. The element sends the thired request to load-video.php. | |
DaleCurtis
2015/07/15 22:28:07
third
horo
2015/07/16 02:23:20
Done.
| |
14 // 6. load-video.php returns the audio file from the fourth byte. | |
15 // | |
16 // If the origin of 2. (mixed-range-response.php) and 6. (load-video.php) are | |
17 // different, an error should occur. | |
18 | |
19 function create_failure_audio_test(url) { | |
20 return new Promise(function(resolve, reject) { | |
21 var audio = document.createElement('audio'); | |
22 audio.oncanplay = function() { | |
23 reject('canplay event should not be fired. url: ' + url); | |
24 }; | |
25 audio.onerror = resolve; | |
26 audio.src = url; | |
27 document.body.appendChild(audio); | |
28 }); | |
29 } | |
30 | |
31 function create_success_audio_test(url) { | |
32 return new Promise(function(resolve, reject) { | |
33 var audio = document.createElement('audio'); | |
34 audio.oncanplay = resolve; | |
35 audio.onerror = function(e) { | |
36 reject('error event should not be fired. url: ' + url); | |
37 }; | |
38 audio.src = url; | |
39 document.body.appendChild(audio); | |
40 }); | |
41 } | |
42 | |
43 var HOST_INFO = get_host_info(); | |
44 var MIX_RESPONSE_PHP_PATH = '/media/resources/mixed-range-response.php'; | |
45 var AUDIO_PATH = '/media/resources/load-video.php?' + | |
46 'name=../../../../media/content/silence.oga&type=audio/ogg'; | |
47 | |
48 promise_test(function(t) { | |
49 return create_success_audio_test( | |
50 HOST_INFO['HTTP_ORIGIN'] + MIX_RESPONSE_PHP_PATH + '?location=' + | |
51 encodeURIComponent(HOST_INFO['HTTP_ORIGIN'] + AUDIO_PATH)); | |
52 }, 'Mixing same-origin responses must succeed.'); | |
53 | |
54 promise_test(function(t) { | |
55 return create_failure_audio_test( | |
56 HOST_INFO['HTTP_ORIGIN'] + MIX_RESPONSE_PHP_PATH + '?location=' + | |
57 encodeURIComponent(HOST_INFO['HTTP_REMOTE_ORIGIN'] + AUDIO_PATH)); | |
58 }, 'Mixing same-origin response and remote-origin response must fail.'); | |
59 | |
60 promise_test(function(t) { | |
61 return create_failure_audio_test( | |
62 HOST_INFO['HTTP_REMOTE_ORIGIN'] + MIX_RESPONSE_PHP_PATH + '?location=' + | |
63 encodeURIComponent(HOST_INFO['HTTP_ORIGIN'] + AUDIO_PATH)); | |
64 }, 'Mixing remote-origin response and same-origin response must fail.'); | |
65 | |
66 promise_test(function(t) { | |
67 return create_success_audio_test( | |
68 HOST_INFO['HTTP_REMOTE_ORIGIN'] + MIX_RESPONSE_PHP_PATH + '?location=' + | |
69 encodeURIComponent(HOST_INFO['HTTP_REMOTE_ORIGIN'] + AUDIO_PATH)); | |
70 }, 'Mixing same remote-origin responses must succeed.'); | |
71 | |
72 </script> | |
73 </body> | |
OLD | NEW |