blob: b68c4dc89e47aea83d6ac1d4aa02755b6575da89 [file] [log] [blame]
tommyw@google.comdbbc75e2012-07-25 16:52:56 +00001<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2<html>
3<head>
4<link rel="stylesheet" href="../js/resources/js-test-style.css">
mark.lam@apple.com82bfeb62013-09-08 00:09:19 +00005<script src="../../resources/js-test-pre.js"></script>
tommyw@google.comdbbc75e2012-07-25 16:52:56 +00006</head>
7<body>
8<p id="description"></p>
9<div id="console"></div>
10<script>
11description("Tests MediaStreamTrack callbacks.");
12
13// Note that the below behaviour doesn't reflect how it works outside of LayoutTests.
14// The underlying mock is modified to trigger the events when certain functions are called.
15// This modified behaviour allows us to test the MediaStreamTrack class properly.
16
17var stream;
18var track;
19
20function error() {
21 testFailed('Stream generation failed.');
22 finishJSTest();
23}
24
25function getUserMedia(constraints, callback) {
26 try {
27 navigator.webkitGetUserMedia(constraints, callback, error);
28 } catch (e) {
29 testFailed('webkitGetUserMedia threw exception :' + e);
30 finishJSTest();
31 }
32}
33
34function onTrackEnded() {
35 testPassed('Track onended callback succeeded.');
36
tommyw@google.comd1a9a212013-01-16 09:34:29 +000037 shouldBeEqualToString('track.readyState', 'ended');
38
tommyw@google.comdbbc75e2012-07-25 16:52:56 +000039 finishJSTest();
40}
41
42function onTrackUnmute() {
43 testPassed('Track onunmute callback succeeded.');
44
tommyw@google.comd1a9a212013-01-16 09:34:29 +000045 shouldBeEqualToString('track.readyState', 'live');
46
tommyw@google.comdbbc75e2012-07-25 16:52:56 +000047 stream.stop();
48}
49
50function onTrackMute() {
51 testPassed('Track onmute callback succeeded.');
52
tommyw@google.comd1a9a212013-01-16 09:34:29 +000053 shouldBeEqualToString('track.readyState', 'muted');
54
tommyw@google.comdbbc75e2012-07-25 16:52:56 +000055 track.enabled = true;
56}
57
58function gotStream(s) {
59 testPassed('getUserMedia succeeded.');
60
61 stream = s;
tommyw@google.comfd01ce12013-01-14 13:31:01 +000062 track = stream.getVideoTracks()[0];
tommyw@google.comdbbc75e2012-07-25 16:52:56 +000063
tommyw@google.comd1a9a212013-01-16 09:34:29 +000064 shouldBeEqualToString('track.readyState', 'live');
65
tommyw@google.comdbbc75e2012-07-25 16:52:56 +000066 track.onunmute = onTrackUnmute;
67 track.onmute = onTrackMute;
68 track.onended = onTrackEnded;
69
70 track.enabled = false;
71}
72
73getUserMedia({audio:true, video:true}, gotStream);
74
75window.jsTestIsAsync = true;
76window.successfullyParsed = true;
77</script>
mark.lam@apple.com82bfeb62013-09-08 00:09:19 +000078<script src="../../resources/js-test-post.js"></script>
tommyw@google.comdbbc75e2012-07-25 16:52:56 +000079</body>
80</html>