Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / media / media-source / webkitmediasource-abort.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 abortDuringInitSegment(runNextTestCase, videoTag)
11             {
12                 segmentHelper.addSourceBuffer();
13
14                 consoleWrite("Test aborting during initialization segment.");
15                 try {
16                     var initSegment = segmentHelper.initSegment;
17                     var partialInitSegment = initSegment.subarray(0, initSegment.length / 2);
18
19                     consoleWrite("Appending partial initialization segment.");
20                     segmentHelper.sourceBuffer.append(partialInitSegment);
21
22                     consoleWrite("Aborting append.");
23                     segmentHelper.sourceBuffer.abort();
24
25                     consoleWrite("Appending full initialization segment.");
26                     segmentHelper.appendInitSegment();
27
28                     consoleWrite("Appending enough media segments to trigger loadeddata.");
29                     segmentHelper.appendMediaSegment(0);
30                     segmentHelper.appendMediaSegment(1);
31
32                     var eventHandler = function(event)
33                     {
34                         event.target.removeEventListener('loadeddata', eventHandler);
35                         runNextTestCase();
36                     };
37                     videoTag.addEventListener('loadeddata', eventHandler);
38                 } catch (e) {
39                     consoleWrite("Unexpected exception " + e);
40                 }
41             }
42
43             function abortDuringMediaSegment(runNextTestCase, videoTag)
44             {
45                 segmentHelper.addSourceBuffer();
46
47                 consoleWrite("Test aborting in the middle of a media segment.");
48                 try {
49                     segmentHelper.appendInitSegment();
50                     var mediaSegment = segmentHelper.mediaSegments[0];
51                     var partialMediaSegment = mediaSegment.subarray(0, mediaSegment.length / 2);
52
53                     consoleWrite("Appending partial media segment.");
54                     segmentHelper.sourceBuffer.append(partialMediaSegment);
55
56                     consoleWrite("Aborting append.");
57                     segmentHelper.sourceBuffer.abort();
58
59                     consoleWrite("Appending full media segment.");
60                     segmentHelper.appendMediaSegment(0);
61
62                     consoleWrite("Appending enough media segments to trigger loadeddata.");
63                     segmentHelper.appendMediaSegment(1);
64
65                     var eventHandler = function(event)
66                     {
67                         event.target.removeEventListener('loadedmetadata', eventHandler);
68                         runNextTestCase();
69                     };
70                     videoTag.addEventListener('loadedmetadata', eventHandler);
71                 } catch (e) {
72                     consoleWrite("Unexpected exception " + e);
73                 }
74             }
75
76             function onLoad()
77             {
78                 findMediaElement();
79
80                 waitForEvent('loadeddata');
81                 waitForEvent('webkitsourceopen', "", false, false, mediaSource);
82                 waitForEvent('playing');
83                 waitForEvent('webkitsourceended', "", false, false, mediaSource);
84                 waitForEvent('ended');
85                 waitForEvent('emptied');
86
87                 segmentHelper.init(video, function(success)
88                 {
89                     if (!success) {
90                         failTest("Failed to load segment data");
91                         return;
92                     }
93
94                     var testCases = [
95                         abortDuringInitSegment,
96                         abortDuringMediaSegment,
97                     ];
98
99                     MediaSourceTest.startSourceOpenTesting(video, testCases);
100                 });
101             }
102         </script>
103     </head>
104     <body onload="onLoad()">
105         <video> </video>
106         <p>Tests webkitSourceAbort() functionality</p>
107     </body>
108 </html>