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 3d5435938d03ee8cd5d69cc55973b2fdb87b8e46..6e9cde639dcdf5299182c84cb4a785eca4391d13 100644 |
--- a/content/test/data/media/webrtc_test_utilities.js |
+++ b/content/test/data/media/webrtc_test_utilities.js |
@@ -52,6 +52,14 @@ function detectVideoStopped(videoElementName, callback) { |
callback); |
} |
+function detectBlackVideo(videoElementName, callback) { |
+ detectVideo(videoElementName, |
+ function (pixels, previous_pixels) { |
+ return isVideoBlack(pixels); |
+ }, |
+ callback); |
+} |
+ |
function detectVideo(videoElementName, predicate, callback) { |
console.log('Looking at video in element ' + videoElementName); |
@@ -97,6 +105,11 @@ function waitForVideoToStop(videoElement) { |
detectVideoStopped(videoElement, function () { eventOccured(); }); |
} |
+function waitForBlackVideo(videoElement) { |
+ addExpectedEvent(); |
+ detectBlackVideo(videoElement, function () { eventOccured(); }); |
+} |
+ |
// Calculates the current frame rate and compares to |expected_frame_rate| |
// |callback| is triggered with value |true| if the calculated frame rate |
// is +-1 the expected or |false| if five calculations fail to match |
@@ -171,6 +184,16 @@ function isVideoPlaying(pixels, previousPixels) { |
return false; |
} |
+function isVideoBlack(pixels) { |
+ for (var i = 0; i < pixels.length; i++) { |
+ // |pixels| is in RGBA. Ignore the alpha channel. |
+ if (pixels[i] != 0 && (i + 1) % 4 != 0) { |
+ return false; |
+ } |
+ } |
+ return true; |
+} |
+ |
// This function matches |left| and |right| and fails the test if the |
// values don't match using normal javascript equality (i.e. the hard |
// types of the operands aren't checked). |