Index: chrome/browser/media/webrtc/webrtc_browsertest_base.cc |
diff --git a/chrome/browser/media/webrtc/webrtc_browsertest_base.cc b/chrome/browser/media/webrtc/webrtc_browsertest_base.cc |
index 1d76576bbd0ad7562172c7f5d6b7ed95eda0afe5..4e88d2ace2e91254863abfadc5167116a7159c90 100644 |
--- a/chrome/browser/media/webrtc/webrtc_browsertest_base.cc |
+++ b/chrome/browser/media/webrtc/webrtc_browsertest_base.cc |
@@ -13,6 +13,7 @@ |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/strings/string_number_conversions.h" |
+#include "base/strings/string_split.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
#include "base/values.h" |
@@ -64,6 +65,7 @@ const char WebRtcTestBase::kAudioVideoCallConstraints720p[] = |
const char WebRtcTestBase::kUseDefaultCertKeygen[] = "null"; |
const char WebRtcTestBase::kUseDefaultAudioCodec[] = ""; |
const char WebRtcTestBase::kUseDefaultVideoCodec[] = ""; |
+const char WebRtcTestBase::kUndefined[] = "undefined"; |
namespace { |
@@ -595,3 +597,97 @@ void WebRtcTestBase::VerifyRtpReceivers( |
: "verifyRtpReceivers()"; |
EXPECT_EQ("ok-receivers-verified", ExecuteJavascript(javascript, tab)); |
} |
+ |
+std::vector<std::string> WebRtcTestBase::CreateAndAddAudioAndVideoTrack( |
+ content::WebContents* tab, |
+ StreamArgumentType stream_argument_type) const { |
+ const char* string_argument_type_str = nullptr; |
+ switch (stream_argument_type) { |
+ case StreamArgumentType::NO_STREAM: |
+ string_argument_type_str = "'no-stream'"; |
+ break; |
+ case StreamArgumentType::SHARED_STREAM: |
+ string_argument_type_str = "'shared-stream'"; |
+ break; |
+ case StreamArgumentType::INDIVIDUAL_STREAMS: |
+ string_argument_type_str = "'individual-streams'"; |
+ break; |
+ } |
+ std::string result = |
+ ExecuteJavascript(base::StringPrintf("createAndAddAudioAndVideoTrack(%s)", |
+ string_argument_type_str), |
+ tab); |
+ EXPECT_TRUE(base::StartsWith(result, "ok-", base::CompareCase::SENSITIVE)); |
+ std::vector<std::string> ids = base::SplitString( |
+ result.substr(3), " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
+ EXPECT_EQ(4u, ids.size()); |
+ return ids; |
+} |
+ |
+void WebRtcTestBase::RemoveTrack(content::WebContents* tab, |
+ const std::string& track_id) const { |
+ EXPECT_EQ( |
+ "ok-sender-removed", |
+ ExecuteJavascript( |
+ base::StringPrintf("removeTrack('%s')", track_id.c_str()), tab)); |
+} |
+ |
+bool WebRtcTestBase::HasLocalStreamWithTrack( |
+ content::WebContents* tab, |
+ const std::string& stream_id, |
+ const std::string& track_id) const { |
+ return HasStreamWithTrack(tab, "hasLocalStreamWithTrack", stream_id, |
+ track_id); |
+} |
+ |
+bool WebRtcTestBase::HasRemoteStreamWithTrack( |
+ content::WebContents* tab, |
+ const std::string& stream_id, |
+ const std::string& track_id) const { |
+ return HasStreamWithTrack(tab, "hasRemoteStreamWithTrack", stream_id, |
+ track_id); |
+} |
+ |
+bool WebRtcTestBase::HasStreamWithTrack(content::WebContents* tab, |
+ const char* function_name, |
+ std::string stream_id, |
+ std::string track_id) const { |
+ if (stream_id != kUndefined) |
+ stream_id = "'" + stream_id + "'"; |
+ std::string javascript = base::StringPrintf( |
+ "%s(%s, '%s')", function_name, stream_id.c_str(), track_id.c_str()); |
+ std::string result = ExecuteJavascript(javascript, tab); |
+ EXPECT_TRUE(result == "ok-stream-with-track-found" || |
+ result == "ok-stream-with-track-not-found"); |
+ return result == "ok-stream-with-track-found"; |
+} |
+ |
+bool WebRtcTestBase::HasSenderWithTrack(content::WebContents* tab, |
+ std::string track_id) const { |
+ std::string javascript = |
+ base::StringPrintf("hasSenderWithTrack('%s')", track_id.c_str()); |
+ std::string result = ExecuteJavascript(javascript, tab); |
+ EXPECT_TRUE(result == "ok-sender-with-track-found" || |
+ result == "ok-sender-with-track-not-found"); |
+ return result == "ok-sender-with-track-found"; |
+} |
+ |
+bool WebRtcTestBase::HasReceiverWithTrack(content::WebContents* tab, |
+ std::string track_id) const { |
+ std::string javascript = |
+ base::StringPrintf("hasReceiverWithTrack('%s')", track_id.c_str()); |
+ std::string result = ExecuteJavascript(javascript, tab); |
+ EXPECT_TRUE(result == "ok-receiver-with-track-found" || |
+ result == "ok-receiver-with-track-not-found"); |
+ return result == "ok-receiver-with-track-found"; |
+} |
+ |
+size_t WebRtcTestBase::GetNegotiationNeededCount( |
+ content::WebContents* tab) const { |
+ std::string result = ExecuteJavascript("getNegotiationNeededCount()", tab); |
+ EXPECT_TRUE(base::StartsWith(result, "ok-negotiation-count-is-", |
+ base::CompareCase::SENSITIVE)); |
+ size_t count = 0; |
+ EXPECT_TRUE(base::StringToSizeT(result.substr(24), &count)); |
+ return count; |
+} |