Index: content/browser/media/webrtc_getusermedia_browsertest.cc |
diff --git a/content/browser/media/webrtc_getusermedia_browsertest.cc b/content/browser/media/webrtc_getusermedia_browsertest.cc |
index 185b56211745d965d3b15ebd3dd349b2b85276a0..d7bca4f9ea4e17b1d43094eb32cf07d8d25954ca 100644 |
--- a/content/browser/media/webrtc_getusermedia_browsertest.cc |
+++ b/content/browser/media/webrtc_getusermedia_browsertest.cc |
@@ -665,6 +665,68 @@ IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, |
ExecuteJavascriptAndReturnResult(constraints_1_1)); |
} |
+// This test calls getUserMedia in an iframe and immediately close the iframe |
+// in the scope of the success callback. |
+IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, |
+ AudioInIFrameAndCloseInSuccessCb) { |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ |
+ GURL url(embedded_test_server()->GetURL("/media/getusermedia.html")); |
+ NavigateToURL(shell(), url); |
+ |
+ std::string call = |
+ "getUserMediaInIframeAndCloseInSuccessCb({audio: true});"; |
+ ExecuteJavascriptAndWaitForOk(call); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, |
+ VideoInIFrameAndCloseInSuccessCb) { |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ |
+ GURL url(embedded_test_server()->GetURL("/media/getusermedia.html")); |
+ NavigateToURL(shell(), url); |
+ |
+ std::string call = |
+ "getUserMediaInIframeAndCloseInSuccessCb({video: true});"; |
+ ExecuteJavascriptAndWaitForOk(call); |
+} |
+ |
+// This test calls getUserMedia in an iframe and immediately close the iframe |
+// in the scope of the failure callback. |
+IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, |
+ VideoWithBadConstraintsInIFrameAndCloseInFailureCb) { |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ |
+ GURL url(embedded_test_server()->GetURL("/media/getusermedia.html")); |
+ |
+ int large_value = 99999; |
+ std::string call = |
+ GenerateGetUserMediaCall("getUserMediaInIframeAndCloseInFailureCb", |
+ large_value, |
+ large_value, |
+ large_value, |
+ large_value, |
+ large_value, |
+ large_value); |
+ NavigateToURL(shell(), url); |
+ |
+ ExecuteJavascriptAndWaitForOk(call); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, |
+ InvalidSourceIdInIFrameAndCloseInFailureCb) { |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ |
+ GURL url(embedded_test_server()->GetURL("/media/getusermedia.html")); |
+ |
+ std::string call = |
+ GenerateGetUserMediaWithMandatorySourceID( |
+ "getUserMediaInIframeAndCloseInFailureCb", "invalid", "invalid"); |
+ NavigateToURL(shell(), url); |
+ |
+ ExecuteJavascriptAndWaitForOk(call); |
+} |
+ |
namespace { |
struct UserMediaSizes { |