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

Unified Diff: content/test/data/media/webrtc_test_utilities.js

Issue 68263016: Add simple test for VideoTrack.stop(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix the video detector to work with fake devices. Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/test/data/media/webrtc_test_utilities.js
diff --git a/content/test/data/media/webrtc_test_utilities.js b/content/test/data/media/webrtc_test_utilities.js
index ba894cd56bf09cf0f4ff920fe7eaf0ac5fda5097..26eedaf5f578cf802a2431bb8c5b96b71b56473a 100644
--- a/content/test/data/media/webrtc_test_utilities.js
+++ b/content/test/data/media/webrtc_test_utilities.js
@@ -29,24 +29,51 @@ function detectVideoIn(videoElementName, callback) {
var height = VIDEO_TAG_HEIGHT;
var videoElement = $(videoElementName);
var canvas = $(videoElementName + '-canvas');
+ var old_pixels = [];
var waitVideo = setInterval(function() {
var context = canvas.getContext('2d');
context.drawImage(videoElement, 0, 0, width, height);
- var pixels = context.getImageData(0, 0, width, height).data;
-
- if (isVideoPlaying(pixels, width, height)) {
+ var pixels = context.getImageData(0, 0, width, height / 3).data;
+ if (old_pixels.length == pixels.length &&
phoglund_chromium 2013/11/14 09:01:18 Why is this length check necessary?
perkj_chrome 2013/11/14 13:29:07 Its a prerequisite for isVideoPlaying that they ar
phoglund_chromium 2013/11/14 13:41:05 Ok. Perhaps we should bake that into isVideoPlayin
+ isVideoPlaying(pixels, old_pixels)) {
clearInterval(waitVideo);
callback();
}
+ old_pixels = pixels;
}, 100);
}
+function detectVideoStopped(videoElementName, callback) {
phoglund_chromium 2013/11/14 09:01:18 You should be able to re-use the old function with
perkj_chrome 2013/11/14 13:29:07 Done.
+ var width = VIDEO_TAG_WIDTH;
+ var height = VIDEO_TAG_HEIGHT;
+ var videoElement = $(videoElementName);
+ var canvas = $(videoElementName + '-canvas');
+ var old_pixels = [];
+ var waitVideo = setInterval(function() {
+ var context = canvas.getContext('2d');
+ context.drawImage(videoElement, 0, 0, width, height);
+ var pixels = context.getImageData(0, 0 , width, height / 3).data;
+ if (old_pixels.length == pixels.length &&
+ !isVideoPlaying(pixels, old_pixels)) {
+ clearInterval(waitVideo);
+ callback();
+ }
+ old_pixels = pixels;
+ }, 300);
phoglund_chromium 2013/11/14 09:01:18 Don't see why this should be different from the ot
perkj_chrome 2013/11/14 13:29:07 We can increase it a bit. But it it is lower that
+}
+
function waitForVideo(videoElement) {
document.title = 'Waiting for video...';
addExpectedEvent();
detectVideoIn(videoElement, function () { eventOccured(); });
}
+function waitForVideoToStop(videoElement) {
+ document.title = 'Waiting for video to stop...';
+ addExpectedEvent();
+ detectVideoStopped(videoElement, function () { eventOccured(); });
+}
+
function waitForConnectionToStabilize(peerConnection) {
addExpectedEvent();
var waitForStabilization = setInterval(function() {
@@ -68,14 +95,11 @@ function eventOccured() {
}
}
-// This very basic video verification algorithm will be satisfied if any
-// pixels are nonzero in a small sample area in the middle. It relies on the
-// assumption that a video element with null source just presents zeroes.
-function isVideoPlaying(pixels, width, height) {
- // Sample somewhere near the middle of the image.
- var middle = width * height / 2;
- for (var i = 0; i < 20; i++) {
- if (pixels[middle + i] > 0) {
+//This very basic video verification algorithm will be satisfied if any
phoglund_chromium 2013/11/14 09:01:18 Nit: space between // and letters
perkj_chrome 2013/11/14 13:29:07 Done.
+//pixels are changed.
+function isVideoPlaying(pixels, previouse_pixels) {
phoglund_chromium 2013/11/14 09:01:18 Nit: previous_pixels
perkj_chrome 2013/11/14 13:29:07 Done.
+ for (var i = 0; i < pixels.length; i++) {
+ if (pixels[i] != previouse_pixels[i]) {
return true;
}
}
« content/test/data/media/getusermedia.html ('K') | « content/test/data/media/getusermedia.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698