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 4e88d2ace2e91254863abfadc5167116a7159c90..3877dbe2eaf292983030499f7ee18ff0e7b787b3 100644 |
--- a/chrome/browser/media/webrtc/webrtc_browsertest_base.cc |
+++ b/chrome/browser/media/webrtc/webrtc_browsertest_base.cc |
@@ -151,6 +151,13 @@ std::vector<std::string> JsonArrayToVectorOfStrings( |
} // namespace |
+WebRtcTestBase::TrackEvent::TrackEvent(const std::string& track_id) |
+ : track_id(track_id) {} |
+ |
+WebRtcTestBase::TrackEvent::TrackEvent(const TrackEvent&) = default; |
+ |
+WebRtcTestBase::TrackEvent::~TrackEvent() = default; |
+ |
WebRtcTestBase::WebRtcTestBase(): detect_errors_in_javascript_(false) { |
// The handler gets set for each test method, but that's fine since this |
// set operation is idempotent. |
@@ -691,3 +698,27 @@ size_t WebRtcTestBase::GetNegotiationNeededCount( |
EXPECT_TRUE(base::StringToSizeT(result.substr(24), &count)); |
return count; |
} |
+ |
+void WebRtcTestBase::SetupOnTrackListener(content::WebContents* tab) const { |
+ EXPECT_EQ("ok-ontrack-wired", |
+ ExecuteJavascript("setupOnTrackListener()", tab)); |
+} |
+ |
+std::vector<WebRtcTestBase::TrackEvent> WebRtcTestBase::GetTrackEvents( |
+ content::WebContents* tab) const { |
+ std::string result = ExecuteJavascript("getOnTrackEvents()", tab); |
+ EXPECT_TRUE(base::StartsWith(result, "ok-", base::CompareCase::SENSITIVE)); |
+ std::vector<std::string> tokens = base::SplitString( |
+ result.substr(3), " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
+ std::vector<TrackEvent> events; |
+ for (size_t i = 0; i < tokens.size(); ++i) { |
+ if (tokens[i] == "RTCTrackEvent") { |
+ DCHECK_LT(i + 1, tokens.size()); |
+ events.push_back(TrackEvent(tokens[++i])); |
+ } else { |
+ DCHECK(!events.empty()); |
+ events[events.size() - 1].stream_ids.push_back(tokens[i]); |
+ } |
+ } |
+ return events; |
+} |