Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / media / media-source / webkitmediasource-errors.html
1 <!DOCTYPE html>
2 <html>
3     <head>
4         <script src="/media-resources/video-test.js"></script>
5         <script src="/media/resources/media-source/webm/segment-info.js"></script>
6         <script src="webkitmediasource-util.js"></script>
7         <script>
8             var segmentHelper = new MediaSourceTest.SegmentHelper(WebMSegmentInfo.testWebM);
9
10             function appendUntilMetadataLoaded(videoTag, doneCallback)
11             {
12                 segmentHelper.appendMediaSegment(0);
13                 segmentHelper.appendMediaSegment(1);
14
15                 var eventHandler = function(event)
16                 {
17                     videoTag.removeEventListener('loadedmetadata', eventHandler);
18                     doneCallback();
19                 };
20                 videoTag.addEventListener('loadedmetadata', eventHandler);
21             }
22
23             function didNotSendInitSegmentFirst(runNextTestCase, videoTag)
24             {
25                 consoleWrite("Test appending a media segment before sending the initialization segment.");
26                 segmentHelper.addSourceBuffer();
27                 segmentHelper.appendMediaSegment(0);
28             }
29
30             function immediateDecodeErrorViaEndOfStream(runNextTestCase, videoTag)
31             {
32                  consoleWrite("Test signalling a decode error with MediaSource.endOfStream.");
33                  mediaSource = event.target;
34                  mediaSource.endOfStream("decode");
35             }
36
37             function immediateNetworkErrorViaEndOfStream(runNextTestCase, videoTag)
38             {
39                 consoleWrite("Test signalling a network error with MediaSource.endOfStream.");
40                 mediaSource = event.target;
41                 mediaSource.endOfStream("network");
42             }
43
44             function decodeErrorAfterHaveMetadata(runNextTestCase, videoTag)
45             {
46                 consoleWrite("Test signalling a decode error with MediaSource.endOfStream after we have appended enough data to get to the HAVE_METADATA state.");
47                 mediaSource = event.target;
48                 segmentHelper.addSourceBuffer();
49                 segmentHelper.appendInitSegment();
50
51                 appendUntilMetadataLoaded(videoTag, function()
52                 {
53                     mediaSource.endOfStream("decode");
54                 });
55             }
56
57             function networkErrorAfterHaveMetadata(runNextTestCase, videoTag)
58             {
59                 consoleWrite("Test signalling a network error with MediaSource.endOfStream after we have appended enough data to get to the HAVE_METADATA state.");
60                 mediaSource = event.target;
61                 segmentHelper.addSourceBuffer();
62                 segmentHelper.appendInitSegment();
63                 appendUntilMetadataLoaded(videoTag, function()
64                 {
65                     mediaSource.endOfStream("network");
66                 });
67             }
68
69             function onLoad()
70             {
71                 findMediaElement();
72
73                 waitForEvent('loadedmetadata');
74                 waitForEvent('webkitsourceopen', "", false, false, mediaSource);                          
75                 waitForEvent('playing');
76                 waitForEvent('webkitsourceended', "", false, false, mediaSource);
77                 waitForEvent('ended');
78                 waitForEvent('emptied');
79
80                 segmentHelper.init(video, function(success)
81                 {
82                     if (!success) {
83                         failTest("Failed to load segment data");
84                         return;
85                     }
86
87                     var testCases = [
88                         didNotSendInitSegmentFirst,
89                         immediateDecodeErrorViaEndOfStream,
90                         immediateNetworkErrorViaEndOfStream,
91                         decodeErrorAfterHaveMetadata,
92                         networkErrorAfterHaveMetadata
93                     ];
94
95                     MediaSourceTest.startSourceOpenTesting(video, testCases);
96                 });
97             }
98         </script>
99     </head>
100     <body onload="onLoad()">
101         <video> </video>
102         <p>Tests error cases with MediaSource API</p>
103     </body>
104 </html>