| Index: content/browser/media/webrtc_browsertest.cc
|
| diff --git a/content/browser/media/webrtc_browsertest.cc b/content/browser/media/webrtc_browsertest.cc
|
| index 824c0c384a1a4613fa0aafcf921b45aaffb4ff2b..b1bed15614358ed98c01b78254a947d94df77748 100644
|
| --- a/content/browser/media/webrtc_browsertest.cc
|
| +++ b/content/browser/media/webrtc_browsertest.cc
|
| @@ -3,10 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/command_line.h"
|
| -#include "base/json/json_reader.h"
|
| #include "base/strings/stringprintf.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/test/trace_event_analyzer.h"
|
| #include "base/values.h"
|
| #include "content/browser/media/webrtc_internals.h"
|
| #include "content/browser/web_contents/web_contents_impl.h"
|
| @@ -14,194 +11,21 @@
|
| #include "content/public/test/browser_test_utils.h"
|
| #include "content/public/test/test_utils.h"
|
| #include "content/shell/browser/shell.h"
|
| -#include "content/test/content_browser_test.h"
|
| #include "content/test/content_browser_test_utils.h"
|
| +#include "content/test/webrtc_content_browsertest_base.h"
|
| #include "media/audio/audio_manager.h"
|
| #include "net/test/embedded_test_server/embedded_test_server.h"
|
| -#include "testing/perf/perf_test.h"
|
|
|
| #if defined(OS_WIN)
|
| #include "base/win/windows_version.h"
|
| #endif
|
|
|
| -using trace_analyzer::TraceAnalyzer;
|
| -using trace_analyzer::Query;
|
| -using trace_analyzer::TraceEventVector;
|
| -
|
| -namespace {
|
| -
|
| -static const char kGetUserMediaAndStop[] = "getUserMediaAndStop";
|
| -static const char kGetUserMediaAndWaitAndStop[] = "getUserMediaAndWaitAndStop";
|
| -static const char kGetUserMediaAndAnalyseAndStop[] =
|
| - "getUserMediaAndAnalyseAndStop";
|
| -
|
| -// Results returned by JS.
|
| -static const char kOK[] = "OK";
|
| -static const char kGetUserMediaFailed[] =
|
| - "GetUserMedia call failed with code undefined";
|
| -
|
| -std::string GenerateGetUserMediaCall(const char* function_name,
|
| - int min_width,
|
| - int max_width,
|
| - int min_height,
|
| - int max_height,
|
| - int min_frame_rate,
|
| - int max_frame_rate) {
|
| - return base::StringPrintf(
|
| - "%s({video: {mandatory: {minWidth: %d, maxWidth: %d, "
|
| - "minHeight: %d, maxHeight: %d, minFrameRate: %d, maxFrameRate: %d}, "
|
| - "optional: []}});",
|
| - function_name,
|
| - min_width,
|
| - max_width,
|
| - min_height,
|
| - max_height,
|
| - min_frame_rate,
|
| - max_frame_rate);
|
| -}
|
| -
|
| -std::string GenerateGetUserMediaWithMandatorySourceID(
|
| - const std::string& function_name,
|
| - const std::string& audio_source_id,
|
| - const std::string& video_source_id) {
|
| - const std::string audio_constraint =
|
| - "audio: {mandatory: { sourceId:\"" + audio_source_id + "\"}}, ";
|
| -
|
| - const std::string video_constraint =
|
| - "video: {mandatory: { sourceId:\"" + video_source_id + "\"}}";
|
| - return function_name + "({" + audio_constraint + video_constraint + "});";
|
| -}
|
| -
|
| -std::string GenerateGetUserMediaWithOptionalSourceID(
|
| - const std::string& function_name,
|
| - const std::string& audio_source_id,
|
| - const std::string& video_source_id) {
|
| - const std::string audio_constraint =
|
| - "audio: {optional: [{sourceId:\"" + audio_source_id + "\"}]}, ";
|
| -
|
| - const std::string video_constraint =
|
| - "video: {optional: [{ sourceId:\"" + video_source_id + "\"}]}";
|
| - return function_name + "({" + audio_constraint + video_constraint + "});";
|
| -}
|
| -
|
| -}
|
| -
|
| namespace content {
|
|
|
| -class WebrtcBrowserTest: public ContentBrowserTest {
|
| +class WebRtcBrowserTest : public WebRtcContentBrowserTest {
|
| public:
|
| - WebrtcBrowserTest() : trace_log_(NULL) {}
|
| - virtual ~WebrtcBrowserTest() {}
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - // These tests require pixel output.
|
| - UseRealGLContexts();
|
| - ContentBrowserTest::SetUp();
|
| - }
|
| -
|
| - virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
|
| - // We need fake devices in this test since we want to run on naked VMs. We
|
| - // assume these switches are set by default in content_browsertests.
|
| - ASSERT_TRUE(CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kUseFakeDeviceForMediaStream));
|
| - ASSERT_TRUE(CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kUseFakeUIForMediaStream));
|
| - }
|
| -
|
| - void StartTracing() {
|
| - CHECK(trace_log_ == NULL) << "Can only can start tracing once";
|
| - trace_log_ = base::debug::TraceLog::GetInstance();
|
| - trace_log_->SetEnabled(base::debug::CategoryFilter("video"),
|
| - base::debug::TraceLog::RECORDING_MODE,
|
| - base::debug::TraceLog::ENABLE_SAMPLING);
|
| - // Check that we are indeed recording.
|
| - EXPECT_EQ(trace_log_->GetNumTracesRecorded(), 1);
|
| - }
|
| -
|
| - void StopTracing() {
|
| - CHECK(message_loop_runner_ == NULL) << "Calling StopTracing more than once";
|
| - trace_log_->SetDisabled();
|
| - message_loop_runner_ = new MessageLoopRunner;
|
| - trace_log_->Flush(base::Bind(&WebrtcBrowserTest::OnTraceDataCollected,
|
| - base::Unretained(this)));
|
| - message_loop_runner_->Run();
|
| - }
|
| -
|
| - void OnTraceDataCollected(
|
| - const scoped_refptr<base::RefCountedString>& events_str_ptr,
|
| - bool has_more_events) {
|
| - CHECK(!has_more_events);
|
| - recorded_trace_data_ = events_str_ptr;
|
| - message_loop_runner_->Quit();
|
| - }
|
| -
|
| - TraceAnalyzer* CreateTraceAnalyzer() {
|
| - return TraceAnalyzer::Create("[" + recorded_trace_data_->data() + "]");
|
| - }
|
| -
|
| - void GetSources(std::vector<std::string>* audio_ids,
|
| - std::vector<std::string>* video_ids) {
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - std::string sources_as_json = ExecuteJavascriptAndReturnResult(
|
| - "getSources()");
|
| - EXPECT_FALSE(sources_as_json.empty());
|
| -
|
| - int error_code;
|
| - std::string error_message;
|
| - scoped_ptr<base::Value> value(
|
| - base::JSONReader::ReadAndReturnError(sources_as_json,
|
| - base::JSON_ALLOW_TRAILING_COMMAS,
|
| - &error_code,
|
| - &error_message));
|
| -
|
| - ASSERT_TRUE(value.get() != NULL) << error_message;
|
| - EXPECT_EQ(value->GetType(), base::Value::TYPE_LIST);
|
| -
|
| - base::ListValue* values;
|
| - ASSERT_TRUE(value->GetAsList(&values));
|
| -
|
| - for (base::ListValue::iterator it = values->begin();
|
| - it != values->end(); ++it) {
|
| - const base::DictionaryValue* dict;
|
| - std::string kind;
|
| - std::string id;
|
| - ASSERT_TRUE((*it)->GetAsDictionary(&dict));
|
| - ASSERT_TRUE(dict->GetString("kind", &kind));
|
| - ASSERT_TRUE(dict->GetString("id", &id));
|
| - ASSERT_FALSE(id.empty());
|
| - EXPECT_TRUE(kind == "audio" || kind == "video");
|
| - if (kind == "audio") {
|
| - audio_ids->push_back(id);
|
| - } else if (kind == "video") {
|
| - video_ids->push_back(id);
|
| - }
|
| - }
|
| - ASSERT_FALSE(audio_ids->empty());
|
| - ASSERT_FALSE(video_ids->empty());
|
| - }
|
| -
|
| - protected:
|
| - bool ExecuteJavascript(const std::string& javascript) {
|
| - return ExecuteScript(shell()->web_contents(), javascript);
|
| - }
|
| -
|
| - // Executes |javascript|. The script is required to use
|
| - // window.domAutomationController.send to send a string value back to here.
|
| - std::string ExecuteJavascriptAndReturnResult(const std::string& javascript) {
|
| - std::string result;
|
| - EXPECT_TRUE(ExecuteScriptAndExtractString(shell()->web_contents(),
|
| - javascript,
|
| - &result));
|
| - return result;
|
| - }
|
| -
|
| - void ExpectTitle(const std::string& expected_title) const {
|
| - base::string16 expected_title16(base::ASCIIToUTF16(expected_title));
|
| - TitleWatcher title_watcher(shell()->web_contents(), expected_title16);
|
| - EXPECT_EQ(expected_title16, title_watcher.WaitAndGetTitle());
|
| - }
|
| + WebRtcBrowserTest() {}
|
| + virtual ~WebRtcBrowserTest() {}
|
|
|
| // Convenience function since most peerconnection-call.html tests just load
|
| // the page, kick off some javascript and wait for the title to change to OK.
|
| @@ -222,205 +46,8 @@ class WebrtcBrowserTest: public ContentBrowserTest {
|
| ASSERT_TRUE(ExecuteJavascript(javascript));
|
| ExpectTitle("OK");
|
| }
|
| -
|
| - private:
|
| - base::debug::TraceLog* trace_log_;
|
| - scoped_refptr<base::RefCountedString> recorded_trace_data_;
|
| - scoped_refptr<MessageLoopRunner> message_loop_runner_;
|
| };
|
|
|
| -// These tests will all make a getUserMedia call with different constraints and
|
| -// see that the success callback is called. If the error callback is called or
|
| -// none of the callbacks are called the tests will simply time out and fail.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetVideoStreamAndStop) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - ASSERT_TRUE(ExecuteJavascript(
|
| - base::StringPrintf("%s({video: true});", kGetUserMediaAndStop)));
|
| -
|
| - ExpectTitle("OK");
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetAudioAndVideoStreamAndStop) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - ASSERT_TRUE(ExecuteJavascript(base::StringPrintf(
|
| - "%s({video: true, audio: true});", kGetUserMediaAndStop)));
|
| -
|
| - ExpectTitle("OK");
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetAudioAndVideoStreamAndClone) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - ASSERT_TRUE(ExecuteJavascript("getUserMediaAndClone();"));
|
| -
|
| - ExpectTitle("OK");
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, TwoGetUserMediaAndStop) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - ASSERT_TRUE(ExecuteJavascript(
|
| - "twoGetUserMediaAndStop({video: true, audio: true});"));
|
| -
|
| - ExpectTitle("OK");
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetUserMediaWithMandatorySourceID_1) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - std::vector<std::string> audio_ids;
|
| - std::vector<std::string> video_ids;
|
| - GetSources(&audio_ids, &video_ids);
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - for (size_t j = 0; j < video_ids.size() / 2; ++j) {
|
| - for (size_t i = 0; i < audio_ids.size(); ++i) {
|
| - EXPECT_EQ(kOK,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithMandatorySourceID(
|
| - kGetUserMediaAndStop, audio_ids[i], video_ids[j])));
|
| - }
|
| - }
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetUserMediaWithMandatorySourceID_2) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - std::vector<std::string> audio_ids;
|
| - std::vector<std::string> video_ids;
|
| - GetSources(&audio_ids, &video_ids);
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - for (size_t j = video_ids.size() / 2; j < video_ids.size(); ++j) {
|
| - for (size_t i = 0; i < audio_ids.size(); ++i) {
|
| - EXPECT_EQ(kOK,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithMandatorySourceID(
|
| - kGetUserMediaAndStop, audio_ids[i], video_ids[j])));
|
| - }
|
| - }
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| - GetUserMediaWithInvalidMandatorySourceID) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - std::vector<std::string> audio_ids;
|
| - std::vector<std::string> video_ids;
|
| - GetSources(&audio_ids, &video_ids);
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| -
|
| - // Test with invalid mandatory audio sourceID.
|
| - NavigateToURL(shell(), url);
|
| - EXPECT_EQ(kGetUserMediaFailed,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithMandatorySourceID(
|
| - kGetUserMediaAndStop, "something invalid", video_ids[0])));
|
| -
|
| - // Test with invalid mandatory video sourceID.
|
| - EXPECT_EQ(kGetUserMediaFailed,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithMandatorySourceID(
|
| - kGetUserMediaAndStop, audio_ids[0], "something invalid")));
|
| -
|
| - // Test with empty mandatory audio sourceID.
|
| - EXPECT_EQ(kGetUserMediaFailed,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithMandatorySourceID(
|
| - kGetUserMediaAndStop, "", video_ids[0])));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetUserMediaWithOptionalSourceID_1) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - std::vector<std::string> audio_ids;
|
| - std::vector<std::string> video_ids;
|
| - GetSources(&audio_ids, &video_ids);
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - // Test all combinations of mandatory sourceID.
|
| - for (size_t j = 0; j < video_ids.size() / 2; ++j) {
|
| - for (size_t i = 0; i < audio_ids.size(); ++i) {
|
| - EXPECT_EQ(kOK,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithOptionalSourceID(
|
| - kGetUserMediaAndStop, audio_ids[i], video_ids[j])));
|
| - }
|
| - }
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, GetUserMediaWithOptionalSourceID_2) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - std::vector<std::string> audio_ids;
|
| - std::vector<std::string> video_ids;
|
| - GetSources(&audio_ids, &video_ids);
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| -
|
| - // Test all combinations of mandatory sourceID.
|
| - for (size_t j = video_ids.size() / 2; j < video_ids.size(); ++j) {
|
| - for (size_t i = 0; i < audio_ids.size(); ++i) {
|
| - EXPECT_EQ(kOK,
|
| - ExecuteJavascriptAndReturnResult(
|
| - GenerateGetUserMediaWithOptionalSourceID(
|
| - kGetUserMediaAndStop, audio_ids[i], video_ids[j])));
|
| - }
|
| - }
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| - GetUserMediaWithInvalidOptionalSourceID) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - std::vector<std::string> audio_ids;
|
| - std::vector<std::string> video_ids;
|
| - GetSources(&audio_ids, &video_ids);
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| -
|
| - // Test with invalid optional audio sourceID.
|
| - NavigateToURL(shell(), url);
|
| - EXPECT_EQ(
|
| - kOK,
|
| - ExecuteJavascriptAndReturnResult(GenerateGetUserMediaWithOptionalSourceID(
|
| - kGetUserMediaAndStop, "something invalid", video_ids[0])));
|
| -
|
| - // Test with invalid optional video sourceID.
|
| - EXPECT_EQ(
|
| - kOK,
|
| - ExecuteJavascriptAndReturnResult(GenerateGetUserMediaWithOptionalSourceID(
|
| - kGetUserMediaAndStop, audio_ids[0], "something invalid")));
|
| -
|
| - // Test with empty optional audio sourceID.
|
| - EXPECT_EQ(
|
| - kOK,
|
| - ExecuteJavascriptAndReturnResult(GenerateGetUserMediaWithOptionalSourceID(
|
| - kGetUserMediaAndStop, "", video_ids[0])));
|
| -}
|
| -
|
| #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
|
| // Timing out on ARM linux bot: http://crbug.com/238490
|
| #define MAYBE_CanSetupVideoCall DISABLED_CanSetupVideoCall
|
| @@ -430,60 +57,10 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
|
|
| // These tests will make a complete PeerConnection-based call and verify that
|
| // video is playing for the call.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CanSetupVideoCall) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanSetupVideoCall) {
|
| MakeTypicalPeerConnectionCall("call({video: true});");
|
| }
|
|
|
| -// This test will make a simple getUserMedia page, verify that video is playing
|
| -// in a simple local <video>, and for a couple of seconds, collect some
|
| -// performance traces.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, TracePerformanceDuringGetUserMedia) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| - NavigateToURL(shell(), url);
|
| - // Put getUserMedia to work and let it run for a couple of seconds.
|
| - ASSERT_TRUE(ExecuteJavascript(base::StringPrintf(
|
| - "%s({video: true}, 10);", kGetUserMediaAndWaitAndStop)));
|
| -
|
| - // Make sure the stream is up and running, then start collecting traces.
|
| - ExpectTitle("Running...");
|
| - StartTracing();
|
| -
|
| - // Wait until the page title changes to "OK". Do not sleep() here since that
|
| - // would stop both this code and the browser underneath.
|
| - ExpectTitle("OK");
|
| - StopTracing();
|
| -
|
| - scoped_ptr<TraceAnalyzer> analyzer(CreateTraceAnalyzer());
|
| - analyzer->AssociateBeginEndEvents();
|
| - trace_analyzer::TraceEventVector events;
|
| - analyzer->FindEvents(
|
| - Query::EventNameIs("VideoCaptureController::OnIncomingCapturedFrame"),
|
| - &events);
|
| - ASSERT_GT(events.size(), 0u)
|
| - << "Could not collect any samples during test, this is bad";
|
| -
|
| - std::string duration_us;
|
| - std::string interarrival_us;
|
| - for (size_t i = 0; i != events.size(); ++i) {
|
| - duration_us.append(
|
| - base::StringPrintf("%d,", static_cast<int>(events[i]->duration)));
|
| - }
|
| -
|
| - for (size_t i = 1; i < events.size(); ++i) {
|
| - interarrival_us.append(base::StringPrintf(
|
| - "%d,",
|
| - static_cast<int>(events[i]->timestamp - events[i - 1]->timestamp)));
|
| - }
|
| -
|
| - perf_test::PrintResultList(
|
| - "video_capture", "", "sample_duration", duration_us, "us", true);
|
| -
|
| - perf_test::PrintResultList(
|
| - "video_capture", "", "interarrival_time", interarrival_us, "us", true);
|
| -}
|
| -
|
| #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(ARCH_CPU_ARM_FAMILY)
|
| // Timing out on ARM linux, see http://crbug.com/240376
|
| #define MAYBE_CanSetupAudioAndVideoCall DISABLED_CanSetupAudioAndVideoCall
|
| @@ -491,18 +68,18 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, TracePerformanceDuringGetUserMedia) {
|
| #define MAYBE_CanSetupAudioAndVideoCall CanSetupAudioAndVideoCall
|
| #endif
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CanSetupAudioAndVideoCall) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanSetupAudioAndVideoCall) {
|
| MakeTypicalPeerConnectionCall("call({video: true, audio: true});");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MANUAL_CanSetupCallAndSendDtmf) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MANUAL_CanSetupCallAndSendDtmf) {
|
| MakeTypicalPeerConnectionCall("callAndSendDtmf(\'123,abc\');");
|
| }
|
|
|
| // TODO(phoglund): this test fails because the peer connection state will be
|
| // stable in the second negotiation round rather than have-local-offer.
|
| // http://crbug.com/293125.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| DISABLED_CanMakeEmptyCallThenAddStreamsAndRenegotiate) {
|
| const char* kJavascript =
|
| "callEmptyThenAddOneStreamAndRenegotiate({video: true, audio: true});";
|
| @@ -520,12 +97,12 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| #define MAYBE_CanForwardRemoteStream CanForwardRemoteStream
|
| #define MAYBE_CanForwardRemoteStream720p CanForwardRemoteStream720p
|
| #endif
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CanForwardRemoteStream) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanForwardRemoteStream) {
|
| MakeTypicalPeerConnectionCall(
|
| "callAndForwardRemoteStream({video: true, audio: true});");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CanForwardRemoteStream720p) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanForwardRemoteStream720p) {
|
| const std::string javascript = GenerateGetUserMediaCall(
|
| "callAndForwardRemoteStream", 1280, 1280, 720, 720, 30, 30);
|
| MakeTypicalPeerConnectionCall(javascript);
|
| @@ -547,7 +124,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CanForwardRemoteStream720p) {
|
| #define MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle\
|
| CanSetupAudioAndVideoCallWithoutMsidAndBundle
|
| #endif
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| MAYBE_CanSetupAudioAndVideoCallWithoutMsidAndBundle) {
|
| MakeTypicalPeerConnectionCall("callWithoutMsidAndBundle();");
|
| }
|
| @@ -561,7 +138,8 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| #else
|
| #define MAYBE_NegotiateUnsupportedVideoCodec NegotiateUnsupportedVideoCodec
|
| #endif
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| MAYBE_NegotiateUnsupportedVideoCodec) {
|
| MakeTypicalPeerConnectionCall("negotiateUnsupportedVideoCodec();");
|
| }
|
| @@ -574,13 +152,14 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| #else
|
| #define MAYBE_NegotiateNonCryptoCall NegotiateNonCryptoCall
|
| #endif
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_NegotiateNonCryptoCall) {
|
| +
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_NegotiateNonCryptoCall) {
|
| MakeTypicalPeerConnectionCall("negotiateNonCryptoCall();");
|
| }
|
|
|
| // This test can negotiate an SDP offer that includes a b=AS:xx to control
|
| // the bandwidth for audio and video
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, NegotiateOfferWithBLine) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, NegotiateOfferWithBLine) {
|
| MakeTypicalPeerConnectionCall("negotiateOfferWithBLine();");
|
| }
|
|
|
| @@ -596,18 +175,18 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, NegotiateOfferWithBLine) {
|
| #define MAYBE_CanSetupLegacyCall CanSetupLegacyCall
|
| #endif
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CanSetupLegacyCall) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CanSetupLegacyCall) {
|
| MakeTypicalPeerConnectionCall("callWithLegacySdp();");
|
| }
|
|
|
| // This test will make a PeerConnection-based call and test an unreliable text
|
| // dataChannel.
|
| // TODO(mallinath) - Remove this test after rtp based data channel is disabled.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, CallWithDataOnly) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, CallWithDataOnly) {
|
| MakeTypicalPeerConnectionCall("callWithDataOnly();");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, CallWithSctpDataOnly) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, CallWithSctpDataOnly) {
|
| MakeTypicalPeerConnectionCall("callWithSctpDataOnly();");
|
| }
|
|
|
| @@ -621,7 +200,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, CallWithSctpDataOnly) {
|
| // This test will make a PeerConnection-based call and test an unreliable text
|
| // dataChannel and audio and video tracks.
|
| // TODO(mallinath) - Remove this test after rtp based data channel is disabled.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithDataAndMedia) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithDataAndMedia) {
|
| MakeTypicalPeerConnectionCall("callWithDataAndMedia();");
|
| }
|
|
|
| @@ -633,7 +212,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithDataAndMedia) {
|
| #define MAYBE_CallWithSctpDataAndMedia CallWithSctpDataAndMedia
|
| #endif
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| MAYBE_CallWithSctpDataAndMedia) {
|
| MakeTypicalPeerConnectionCall("callWithSctpDataAndMedia();");
|
| }
|
| @@ -648,7 +227,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
|
|
| // This test will make a PeerConnection-based call and test an unreliable text
|
| // dataChannel and later add an audio and video track.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithDataAndLaterAddMedia) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithDataAndLaterAddMedia) {
|
| MakeTypicalPeerConnectionCall("callWithDataAndLaterAddMedia();");
|
| }
|
|
|
| @@ -662,7 +241,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithDataAndLaterAddMedia) {
|
| // This test will make a PeerConnection-based call and send a new Video
|
| // MediaStream that has been created based on a MediaStream created with
|
| // getUserMedia.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithNewVideoMediaStream) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithNewVideoMediaStream) {
|
| MakeTypicalPeerConnectionCall("callWithNewVideoMediaStream();");
|
| }
|
|
|
| @@ -672,94 +251,16 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithNewVideoMediaStream) {
|
| // AudioTrack is added instead.
|
| // TODO(phoglund): This test is manual since not all buildbots has an audio
|
| // input.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MANUAL_CallAndModifyStream) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MANUAL_CallAndModifyStream) {
|
| MakeTypicalPeerConnectionCall(
|
| "callWithNewVideoMediaStreamLaterSwitchToAudio();");
|
| }
|
|
|
| -namespace {
|
| -
|
| -struct UserMediaSizes {
|
| - int min_width;
|
| - int max_width;
|
| - int min_height;
|
| - int max_height;
|
| - int min_frame_rate;
|
| - int max_frame_rate;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -class WebrtcUserMediaBrowserTest
|
| - : public WebrtcBrowserTest,
|
| - public testing::WithParamInterface<UserMediaSizes> {
|
| - public:
|
| - WebrtcUserMediaBrowserTest() : user_media_(GetParam()) {}
|
| - const UserMediaSizes& user_media() const { return user_media_; }
|
| -
|
| - private:
|
| - UserMediaSizes user_media_;
|
| -};
|
| -
|
| -// This test calls getUserMedia in sequence with different constraints.
|
| -IN_PROC_BROWSER_TEST_P(WebrtcUserMediaBrowserTest, GetUserMediaConstraints) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| -
|
| - std::string call = GenerateGetUserMediaCall(kGetUserMediaAndStop,
|
| - user_media().min_width,
|
| - user_media().max_width,
|
| - user_media().min_height,
|
| - user_media().max_height,
|
| - user_media().min_frame_rate,
|
| - user_media().max_frame_rate);
|
| - DVLOG(1) << "Calling getUserMedia: " << call;
|
| - NavigateToURL(shell(), url);
|
| - ASSERT_TRUE(ExecuteJavascript(call));
|
| - ExpectTitle("OK");
|
| -}
|
| -
|
| -static const UserMediaSizes kAllUserMediaSizes[] = {
|
| - {320, 320, 180, 180, 30, 30},
|
| - {320, 320, 240, 240, 30, 30},
|
| - {640, 640, 360, 360, 30, 30},
|
| - {640, 640, 480, 480, 30, 30},
|
| - {960, 960, 720, 720, 30, 30},
|
| - {1280, 1280, 720, 720, 30, 30},
|
| - {1920, 1920, 1080, 1080, 30, 30}};
|
| -
|
| -INSTANTIATE_TEST_CASE_P(UserMedia,
|
| - WebrtcUserMediaBrowserTest,
|
| - testing::ValuesIn(kAllUserMediaSizes));
|
| -
|
| -// This test calls getUserMedia and checks for aspect ratio behavior.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, TestGetUserMediaAspectRatio) {
|
| - ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| -
|
| - GURL url(embedded_test_server()->GetURL("/media/getusermedia.html"));
|
| -
|
| - std::string constraints_4_3 = GenerateGetUserMediaCall(
|
| - kGetUserMediaAndAnalyseAndStop, 640, 640, 480, 480, 30, 30);
|
| - std::string constraints_16_9 = GenerateGetUserMediaCall(
|
| - kGetUserMediaAndAnalyseAndStop, 640, 640, 360, 360, 30, 30);
|
| -
|
| - // TODO(mcasas): add more aspect ratios, in particular 16:10 crbug.com/275594.
|
| -
|
| - NavigateToURL(shell(), url);
|
| - ASSERT_TRUE(ExecuteJavascript(constraints_4_3));
|
| - ExpectTitle("4:3 letterbox");
|
| -
|
| - NavigateToURL(shell(), url);
|
| - ASSERT_TRUE(ExecuteJavascript(constraints_16_9));
|
| - ExpectTitle("16:9 letterbox");
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, AddTwoMediaStreamsToOnePC) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, AddTwoMediaStreamsToOnePC) {
|
| MakeTypicalPeerConnectionCall("addTwoMediaStreamsToOneConnection();");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| EstablishAudioVideoCallAndMeasureOutputLevel) {
|
| if (!media::AudioManager::Get()->HasAudioOutputDevices()) {
|
| // Bots with no output devices will force the audio code into a different
|
| @@ -778,7 +279,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| MakeTypicalPeerConnectionCall("callAndEnsureAudioIsPlaying();");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| EstablishAudioVideoCallAndVerifyMutingWorks) {
|
| if (!media::AudioManager::Get()->HasAudioOutputDevices()) {
|
| // Bots with no output devices will force the audio code into a different
|
| @@ -797,7 +298,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| MakeTypicalPeerConnectionCall("callAndEnsureAudioMutingWorks();");
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, CallAndVerifyVideoMutingWorks) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, CallAndVerifyVideoMutingWorks) {
|
| MakeTypicalPeerConnectionCall("callAndEnsureVideoMutingWorks();");
|
| }
|
|
|
| @@ -816,7 +317,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, CallAndVerifyVideoMutingWorks) {
|
| // and Javascript is bypassed since it would trigger a file picker dialog.
|
| // Instead, the dialog callback FileSelected() is invoked directly. In fact,
|
| // there's never a webrtc-internals page opened at all since that's not needed.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithAecDump) {
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest, MAYBE_CallWithAecDump) {
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
|
|
| // We must navigate somewhere first so that the render process is created.
|
| @@ -850,7 +351,7 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest, MAYBE_CallWithAecDump) {
|
|
|
| // As above, but enable and disable dump before starting a call. The file should
|
| // be created, but should be empty.
|
| -IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| +IN_PROC_BROWSER_TEST_F(WebRtcBrowserTest,
|
| MAYBE_CallWithAecDumpEnabledThenDisabled) {
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
|
|
| @@ -877,5 +378,4 @@ IN_PROC_BROWSER_TEST_F(WebrtcBrowserTest,
|
| base::DeleteFile(dump_file, false);
|
| }
|
|
|
| -
|
| } // namespace content
|
|
|