Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / http / tests / media / mixed-range-response.html
blobe4fec3688df130dab3a18988851f36688422472c
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 third request to load-video.php.
14 // 6. load-video.php returns the audio file from the fourth byte.
16 // If the origin of 2. (mixed-range-response.php) and 6. (load-video.php) are
17 // different, an error should occur.
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);
25 audio.onerror = resolve;
26 audio.src = url;
27 document.body.appendChild(audio);
28 });
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);
38 audio.src = url;
39 document.body.appendChild(audio);
40 });
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';
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.');
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.');
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.');
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.');
72 </script>
73 </body>