Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Side by Side Diff: chrome/test/data/extensions/api_test/cast_streaming/basics.js

Issue 170063006: Cast: Add JS API to get raw events logs from cast extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed alpha's comments Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var rtpStream = chrome.cast.streaming.rtpStream; 5 var rtpStream = chrome.cast.streaming.rtpStream;
6 var tabCapture = chrome.tabCapture; 6 var tabCapture = chrome.tabCapture;
7 var udpTransport = chrome.cast.streaming.udpTransport; 7 var udpTransport = chrome.cast.streaming.udpTransport;
8 var createSession = chrome.cast.streaming.session.create; 8 var createSession = chrome.cast.streaming.session.create;
9 var pass = chrome.test.callbackPass; 9 var pass = chrome.test.callbackPass;
10 10
11 function TestStateMachine(stream, audioId, videoId, udpId) { 11 function TestStateMachine(stream, audioId, videoId, udpId) {
12 this.stream = stream; 12 this.stream = stream;
13 this.audioId = audioId; 13 this.audioId = audioId;
14 this.videoId = videoId; 14 this.videoId = videoId;
15 this.udpId = udpId; 15 this.udpId = udpId;
16 this.audioStarted = false; 16 this.audioStarted = false;
17 this.videoStarted = false; 17 this.videoStarted = false;
18 this.audioStopped = false; 18 this.audioStopped = false;
19 this.videoStopped = false; 19 this.videoStopped = false;
20 this.gotAudioRawEvents = false;
21 this.gotVideoRawEvents = false;
20 } 22 }
21 23
22 TestStateMachine.prototype.onStarted = function(id) { 24 TestStateMachine.prototype.onStarted = function(id) {
23 if (id == this.audioId) 25 if (id == this.audioId)
24 this.audioStarted = true; 26 this.audioStarted = true;
25 if (id == this.videoId) 27 if (id == this.videoId)
26 this.videoStarted = true; 28 this.videoStarted = true;
27 if (this.audioStarted && this.videoStarted) 29 if (this.audioStarted && this.videoStarted)
28 this.onAllStarted(); 30 this.onAllStarted();
29 } 31 }
30 32
31 TestStateMachine.prototype.onStopped = function(id) { 33 TestStateMachine.prototype.onStopped = function(id) {
32 if (id == this.audioId) 34 if (id == this.audioId)
33 this.audioStopped = true; 35 this.audioStopped = true;
34 if (id == this.videoId) 36 if (id == this.videoId)
35 this.videoStopped = true; 37 this.videoStopped = true;
36 if (this.audioStopped && this.videoStopped) 38 if (this.audioStopped && this.videoStopped)
37 this.onAllStopped(); 39 this.onAllStopped();
38 } 40 }
39 41
42 TestStateMachine.prototype.onGotRawEvents = function(id, rawEvents) {
43 if (id == this.audioId) {
44 this.gotAudioRawEvents = true;
45 }
46 if (id == this.videoId) {
47 this.gotVideoRawEvents = true;
48 }
49 if (this.gotAudioRawEvents && this.gotVideoRawEvents)
50 this.onGotAllRawEvents();
51 }
52
40 chrome.test.runTests([ 53 chrome.test.runTests([
41 function rtpStreamStart() { 54 function rtpStreamStart() {
42 console.log("[TEST] rtpStreamStart"); 55 console.log("[TEST] rtpStreamStart");
43 tabCapture.capture({audio: true, video: true}, 56 tabCapture.capture({audio: true, video: true},
44 pass(function(stream) { 57 pass(function(stream) {
45 console.log("Got MediaStream."); 58 console.log("Got MediaStream.");
46 chrome.test.assertTrue(!!stream); 59 chrome.test.assertTrue(!!stream);
47 createSession(stream.getAudioTracks()[0], 60 createSession(stream.getAudioTracks()[0],
48 stream.getVideoTracks()[0], 61 stream.getVideoTracks()[0],
49 pass(function(stream, audioId, videoId, udpId) { 62 pass(function(stream, audioId, videoId, udpId) {
50 console.log("Starting."); 63 console.log("Starting.");
51 var stateMachine = new TestStateMachine(stream, 64 var stateMachine = new TestStateMachine(stream,
52 audioId, 65 audioId,
53 videoId, 66 videoId,
54 udpId); 67 udpId);
55 var audioParams = rtpStream.getSupportedParams(audioId)[0]; 68 var audioParams = rtpStream.getSupportedParams(audioId)[0];
56 var videoParams = rtpStream.getSupportedParams(videoId)[0]; 69 var videoParams = rtpStream.getSupportedParams(videoId)[0];
57 chrome.test.assertEq(audioParams.payload.codecName, "OPUS"); 70 chrome.test.assertEq(audioParams.payload.codecName, "OPUS");
58 chrome.test.assertEq(videoParams.payload.codecName, "VP8"); 71 chrome.test.assertEq(videoParams.payload.codecName, "VP8");
59 udpTransport.setDestination(udpId, 72 udpTransport.setDestination(udpId,
60 {address: "127.0.0.1", port: 2344}); 73 {address: "127.0.0.1", port: 2344});
61 rtpStream.onStarted.addListener( 74 rtpStream.onStarted.addListener(
62 stateMachine.onStarted.bind(stateMachine)); 75 stateMachine.onStarted.bind(stateMachine));
63 stateMachine.onAllStarted = 76 stateMachine.onAllStarted =
64 pass(function(audioId, videoId) { 77 pass(function(audioId, videoId) {
78 console.log("Enabling logging.");
79 rtpStream.toggleLogging(audioId, true);
80 rtpStream.toggleLogging(videoId, true);
65 console.log("Stopping."); 81 console.log("Stopping.");
66 rtpStream.stop(audioId); 82 rtpStream.stop(audioId);
67 rtpStream.stop(videoId); 83 rtpStream.stop(videoId);
68 }.bind(null, audioId, videoId)); 84 }.bind(null, audioId, videoId));
69 rtpStream.onStopped.addListener( 85 rtpStream.onStopped.addListener(
70 stateMachine.onStopped.bind(stateMachine)); 86 stateMachine.onStopped.bind(stateMachine));
71 stateMachine.onAllStopped = 87 stateMachine.onAllStopped =
88 pass(function(audioId, videoId) {
89 rtpStream.getRawEvents(audioId,
90 stateMachine.onGotRawEvents.bind(stateMachine, audioId));
91 rtpStream.getRawEvents(videoId,
92 stateMachine.onGotRawEvents.bind(stateMachine, videoId));
93 }.bind(null, audioId, videoId));
94 stateMachine.onGotAllRawEvents =
72 pass(function(stream, audioId, videoId, udpId) { 95 pass(function(stream, audioId, videoId, udpId) {
96 console.log("Disabling logging.");
97 rtpStream.toggleLogging(audioId, false);
98 rtpStream.toggleLogging(videoId, false);
73 console.log("Destroying."); 99 console.log("Destroying.");
74 rtpStream.destroy(audioId); 100 rtpStream.destroy(audioId);
75 rtpStream.destroy(videoId); 101 rtpStream.destroy(videoId);
76 udpTransport.destroy(udpId); 102 udpTransport.destroy(udpId);
77 chrome.test.assertEq(audioParams.payload.codecName, "OPUS"); 103 chrome.test.assertEq(audioParams.payload.codecName, "OPUS");
78 chrome.test.assertEq(videoParams.payload.codecName, "VP8"); 104 chrome.test.assertEq(videoParams.payload.codecName, "VP8");
79 chrome.test.succeed(); 105 chrome.test.succeed();
80 }.bind(null, stream, audioId, videoId, udpId)); 106 }.bind(null, stream, audioId, videoId, udpId));
81 rtpStream.start(audioId, audioParams); 107 rtpStream.start(audioId, audioParams);
82 rtpStream.start(videoId, videoParams); 108 rtpStream.start(videoId, videoParams);
83 }.bind(null, stream))); 109 }.bind(null, stream)));
84 })); 110 }));
85 }, 111 },
86 ]); 112 ]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698