OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <body> | 3 <body> |
4 <script src="../resources/testharness.js"></script> | 4 <script src="../resources/testharness.js"></script> |
5 <script src="../resources/testharnessreport.js"></script> | 5 <script src="../resources/testharnessreport.js"></script> |
6 <script type="text/javascript"> | 6 <script type="text/javascript"> |
7 // FIXME: Check loading from Stream after abort once loading API is ready. | 7 var testInLoadingState = async_test('Test aborting XMLHttpRequest with responseT
ype set to "stream" in LOADING state.'); |
8 var testInLoadingState = async_test("Test aborting XMLHttpRequest with responseT
ype set to 'stream' in LOADING state."); | |
9 | 8 |
10 testInLoadingState.step(function() | 9 testInLoadingState.step(function() |
11 { | 10 { |
12 var xhr = new XMLHttpRequest; | 11 var xhr = new XMLHttpRequest; |
13 | 12 |
14 xhr.responseType = "legacystream"; | 13 xhr.responseType = 'stream'; |
15 | 14 |
16 var seenStates = []; | 15 var seenStates = []; |
17 | 16 |
18 xhr.onreadystatechange = testInLoadingState.step_func(function() { | 17 xhr.onreadystatechange = testInLoadingState.step_func(function() { |
19 // onreadystatechange can be invoked multiple times in LOADING state. | 18 // onreadystatechange can be invoked multiple times in LOADING state. |
20 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) | 19 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) |
21 seenStates.push(xhr.readyState); | 20 seenStates.push(xhr.readyState); |
22 | 21 |
23 switch (xhr.readyState) { | 22 switch (xhr.readyState) { |
24 case xhr.UNSENT: | 23 case xhr.UNSENT: |
25 assert_unreached('Unexpected readyState: UNSENT'); | 24 assert_unreached('Unexpected readyState: UNSENT'); |
26 return; | 25 return; |
27 | 26 |
28 case xhr.OPENED: | 27 case xhr.OPENED: |
29 case xhr.HEADERS_RECEIVED: | 28 case xhr.HEADERS_RECEIVED: |
30 return; | 29 return; |
31 | 30 |
32 case xhr.LOADING: | 31 case xhr.LOADING: |
| 32 var stream = xhr.response; |
| 33 assert_true(stream instanceof ReadableStream, 'xhr.response shoud be
ReadableStream'); |
| 34 assert_equals(stream.state, 'readable', 'stream state before abort()
call'); |
| 35 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x
hr.LOADING]); |
| 36 |
33 xhr.abort(); | 37 xhr.abort(); |
34 | 38 |
35 assert_equals(xhr.readyState, xhr.DONE, "xhr.readyState after abort(
) call"); | 39 assert_equals(stream.state, 'errored', 'stream state after abort() c
all'); |
36 assert_equals(xhr.response, null, "xhr.response after abort() call")
; | 40 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState after abor
t() call'); |
37 return; | 41 assert_equals(xhr.response, null, 'xhr.response after abort() call')
; |
38 | |
39 case xhr.DONE: | |
40 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x
hr.LOADING, xhr.DONE]); | 42 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x
hr.LOADING, xhr.DONE]); |
41 testInLoadingState.done(); | 43 testInLoadingState.done(); |
42 return; | 44 return; |
43 | 45 |
| 46 case xhr.DONE: |
| 47 return; |
| 48 |
44 default: | 49 default: |
45 assert_unreached('Unexpected readyState: ' + xhr.readyState); | 50 assert_unreached('Unexpected readyState: ' + xhr.readyState); |
46 return; | 51 return; |
47 } | 52 } |
48 }); | 53 }); |
49 | 54 |
50 xhr.open('GET', '../resources/test.ogv', true); | 55 xhr.open('GET', '../resources/test.ogv', true); |
51 xhr.send(); | 56 xhr.send(); |
52 }); | 57 }); |
53 | 58 |
54 var testInDoneState = async_test("Test aborting XMLHttpRequest with responseType
set to 'stream' in DONE state."); | 59 var testInDoneState = async_test('Test aborting XMLHttpRequest with responseType
set to "stream" in DONE state.'); |
55 | 60 |
56 testInDoneState.step(function() | 61 testInDoneState.step(function() |
57 { | 62 { |
58 var xhr = new XMLHttpRequest; | 63 var xhr = new XMLHttpRequest; |
59 | 64 |
60 xhr.responseType = "legacystream"; | 65 xhr.responseType = 'stream'; |
61 | 66 |
62 var seenStates = []; | 67 var seenStates = []; |
63 | 68 |
64 xhr.onreadystatechange = testInDoneState.step_func(function() { | 69 xhr.onreadystatechange = testInDoneState.step_func(function() { |
65 // onreadystatechange can be invoked multiple times in LOADING state. | 70 // onreadystatechange can be invoked multiple times in LOADING state. |
66 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) | 71 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) |
67 seenStates.push(xhr.readyState); | 72 seenStates.push(xhr.readyState); |
68 | 73 |
69 switch (xhr.readyState) { | 74 switch (xhr.readyState) { |
70 case xhr.UNSENT: | 75 case xhr.UNSENT: |
71 case xhr.OPENED: | 76 case xhr.OPENED: |
72 case xhr.HEADERS_RECEIVED: | 77 case xhr.HEADERS_RECEIVED: |
73 case xhr.LOADING: | 78 case xhr.LOADING: |
74 return; | 79 return; |
75 | 80 |
76 case xhr.DONE: | 81 case xhr.DONE: |
77 assert_equals(xhr.status, 200, "xhr.status"); | 82 var stream = xhr.response; |
78 assert_not_equals(xhr.response, null, "xhr.response during DONE"); | 83 assert_true(stream instanceof ReadableStream, 'xhr.response shoud be
ReadableStream'); |
| 84 assert_equals(stream.state, 'readable', 'stream state before abort()
call'); |
| 85 assert_equals(xhr.status, 200, 'xhr.status'); |
| 86 assert_not_equals(xhr.response, null, 'xhr.response during DONE'); |
79 | 87 |
80 xhr.abort(); | 88 xhr.abort(); |
81 | 89 |
82 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abor
t() call"); | 90 assert_equals(stream.state, 'errored', 'stream state after abort() c
all'); |
83 assert_equals(xhr.response, null, "xhr.response after abort() call")
; | 91 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState after abor
t() call'); |
| 92 assert_equals(xhr.response, null, 'xhr.response after abort() call')
; |
84 | 93 |
85 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x
hr.LOADING, xhr.DONE]); | 94 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x
hr.LOADING, xhr.DONE]); |
86 testInDoneState.done(); | 95 testInDoneState.done(); |
87 return; | 96 return; |
88 | 97 |
89 default: | 98 default: |
90 assert_unreached('Unexpected readyState: ' + xhr.readyState); | 99 assert_unreached('Unexpected readyState: ' + xhr.readyState); |
91 return; | 100 return; |
92 } | 101 } |
93 }); | 102 }); |
94 | 103 |
95 xhr.open('GET', '../resources/test.ogv', true); | 104 xhr.open('GET', '../resources/test.ogv', true); |
96 xhr.send(); | 105 xhr.send(); |
97 }); | 106 }); |
98 </script> | 107 </script> |
99 </body> | 108 </body> |
100 </html> | 109 </html> |
OLD | NEW |