Index: chrome/browser/media/webrtc_browsertest_base.cc |
diff --git a/chrome/browser/media/webrtc_browsertest_base.cc b/chrome/browser/media/webrtc_browsertest_base.cc |
index a85e0c9699aa7ab4fa31fb04453cc0f95aeff082..f469ff960bd57cbd7f071c57f156475bb659d5a7 100644 |
--- a/chrome/browser/media/webrtc_browsertest_base.cc |
+++ b/chrome/browser/media/webrtc_browsertest_base.cc |
@@ -248,44 +248,71 @@ std::string WebRtcTestBase::ExecuteJavascript( |
return result; |
} |
-// The peer connection server lets our two tabs find each other and talk to |
-// each other (e.g. it is the application-specific "signaling solution"). |
-void WebRtcTestBase::ConnectToPeerConnectionServer( |
- const std::string& peer_name, |
- content::WebContents* tab_contents) const { |
- std::string javascript = base::StringPrintf( |
- "connect('http://localhost:%s', '%s');", |
- test::PeerConnectionServerRunner::kDefaultPort, peer_name.c_str()); |
- EXPECT_EQ("ok-connected", ExecuteJavascript(javascript, tab_contents)); |
+void WebRtcTestBase::SetupPeerconnectionWithLocalStream( |
+ content::WebContents* tab) const { |
+ EXPECT_EQ("ok-peerconnection-created", |
+ ExecuteJavascript("preparePeerConnection()", tab)); |
+ EXPECT_EQ("ok-added", ExecuteJavascript("addLocalStream()", tab)); |
+} |
+ |
+std::string WebRtcTestBase::CreateLocalOffer( |
+ content::WebContents* from_tab) const { |
+ std::string response = ExecuteJavascript("createLocalOffer({})", from_tab); |
+ EXPECT_EQ("ok-", response.substr(0, 3)) << "Failed to create local offer: " |
+ << response; |
+ |
+ std::string local_offer = response.substr(3); |
+ return local_offer; |
+} |
+ |
+std::string WebRtcTestBase::CreateAnswer(std::string local_offer, |
+ content::WebContents* to_tab) const { |
+ std::string javascript = |
+ base::StringPrintf("receiveOfferFromPeer('%s', {})", local_offer.c_str()); |
+ std::string response = ExecuteJavascript(javascript, to_tab); |
+ EXPECT_EQ("ok-", response.substr(0, 3)) |
+ << "Receiving peer failed to receive offer and create answer: " |
+ << response; |
+ |
+ std::string answer = response.substr(3); |
+ return answer; |
} |
-void WebRtcTestBase::EstablishCall(content::WebContents* from_tab, |
+void WebRtcTestBase::ReceiveAnswer(std::string answer, |
+ content::WebContents* from_tab) const { |
+ ASSERT_EQ( |
+ "ok-accepted-answer", |
+ ExecuteJavascript( |
+ base::StringPrintf("receiveAnswerFromPeer('%s')", answer.c_str()), |
+ from_tab)); |
+} |
+ |
+void WebRtcTestBase::GatherAndSendIceCandidates( |
+ content::WebContents* from_tab, |
+ content::WebContents* to_tab) const { |
+ std::string ice_candidates = |
+ ExecuteJavascript("getAllIceCandidates()", from_tab); |
+ |
+ EXPECT_EQ("ok-received-candidates", ExecuteJavascript( |
+ base::StringPrintf("receiveIceCandidates('%s')", ice_candidates.c_str()), |
+ to_tab)); |
+} |
+ |
+void WebRtcTestBase::NegotiateCall(content::WebContents* from_tab, |
content::WebContents* to_tab) const { |
- ConnectToPeerConnectionServer("peer 1", from_tab); |
- ConnectToPeerConnectionServer("peer 2", to_tab); |
+ std::string local_offer = CreateLocalOffer(from_tab); |
+ std::string answer = CreateAnswer(local_offer, to_tab); |
+ ReceiveAnswer(answer, from_tab); |
- EXPECT_EQ("ok-peerconnection-created", |
- ExecuteJavascript("preparePeerConnection()", from_tab)); |
- EXPECT_EQ("ok-added", ExecuteJavascript("addLocalStream()", from_tab)); |
- EXPECT_EQ("ok-negotiating", ExecuteJavascript("negotiateCall()", from_tab)); |
- |
- // Ensure the call gets up on both sides. |
- EXPECT_TRUE(test::PollingWaitUntil("getPeerConnectionReadyState()", |
- "active", from_tab)); |
- EXPECT_TRUE(test::PollingWaitUntil("getPeerConnectionReadyState()", |
- "active", to_tab)); |
+ // Send all ICE candidates (wait for gathering to finish if necessary). |
+ GatherAndSendIceCandidates(to_tab, from_tab); |
+ GatherAndSendIceCandidates(from_tab, to_tab); |
} |
void WebRtcTestBase::HangUp(content::WebContents* from_tab) const { |
EXPECT_EQ("ok-call-hung-up", ExecuteJavascript("hangUp()", from_tab)); |
} |
-void WebRtcTestBase::WaitUntilHangupVerified( |
- content::WebContents* tab_contents) const { |
- EXPECT_TRUE(test::PollingWaitUntil("getPeerConnectionReadyState()", |
- "no-peer-connection", tab_contents)); |
-} |
- |
void WebRtcTestBase::DetectErrorsInJavaScript() { |
detect_errors_in_javascript_ = true; |
} |