diff options
Diffstat (limited to 'chromium/content/browser/media/webrtc_internals_unittest.cc')
-rw-r--r-- | chromium/content/browser/media/webrtc_internals_unittest.cc | 202 |
1 files changed, 163 insertions, 39 deletions
diff --git a/chromium/content/browser/media/webrtc_internals_unittest.cc b/chromium/content/browser/media/webrtc_internals_unittest.cc index a00ccb9877c..e4b0531fa54 100644 --- a/chromium/content/browser/media/webrtc_internals_unittest.cc +++ b/chromium/content/browser/media/webrtc_internals_unittest.cc @@ -23,7 +23,8 @@ class MockWebRTCInternalsProxy : public WebRTCInternalsUIObserver { virtual void OnUpdate(const std::string& command, const base::Value* value) OVERRIDE { command_ = command; - value_.reset(value->DeepCopy()); + if (value) + value_.reset(value->DeepCopy()); } std::string command() { @@ -41,17 +42,49 @@ class MockWebRTCInternalsProxy : public WebRTCInternalsUIObserver { class WebRTCInternalsTest : public testing::Test { public: - WebRTCInternalsTest() : io_thread_(BrowserThread::UI, &io_loop_) {} + WebRTCInternalsTest() : io_thread_(BrowserThread::UI, &io_loop_) { + WebRTCInternals::GetInstance()->ResetForTesting(); + } protected: - std::string ExpectedInfo(std::string prefix, - std::string id, - std::string suffix) { - static const std::string kstatic_part1 = std::string( - "{\"constraints\":\"c\","); - static const std::string kstatic_part2 = std::string( - ",\"servers\":\"s\",\"url\":\"u\"}"); - return prefix + kstatic_part1 + id + kstatic_part2 + suffix; + void VerifyString(const base::DictionaryValue* dict, + const std::string& key, + const std::string& expected) { + std::string actual; + EXPECT_TRUE(dict->GetString(key, &actual)); + EXPECT_EQ(expected, actual); + } + + void VerifyInt(const base::DictionaryValue* dict, + const std::string& key, + int expected) { + int actual; + EXPECT_TRUE(dict->GetInteger(key, &actual)); + EXPECT_EQ(expected, actual); + } + + void VerifyList(const base::DictionaryValue* dict, + const std::string& key, + const base::ListValue& expected) { + const base::ListValue* actual = NULL; + EXPECT_TRUE(dict->GetList(key, &actual)); + EXPECT_TRUE(expected.Equals(actual)); + } + + void VerifyGetUserMediaData(base::Value* actual_data, + int rid, + int pid, + const std::string& origin, + const std::string& audio, + const std::string& video) { + base::DictionaryValue* dict = NULL; + EXPECT_TRUE(actual_data->GetAsDictionary(&dict)); + + VerifyInt(dict, "rid", rid); + VerifyInt(dict, "pid", pid); + VerifyString(dict, "origin", origin); + VerifyString(dict, "audio", audio); + VerifyString(dict, "video", video); } base::MessageLoop io_loop_; @@ -83,19 +116,11 @@ TEST_F(WebRTCInternalsTest, SendAddPeerConnectionUpdate) { base::DictionaryValue* dict = NULL; EXPECT_TRUE(observer->value()->GetAsDictionary(&dict)); - int int_value; - EXPECT_TRUE(dict->GetInteger("pid", &int_value)); - EXPECT_EQ(1, int_value); - EXPECT_TRUE(dict->GetInteger("lid", &int_value)); - EXPECT_EQ(2, int_value); - - std::string value; - EXPECT_TRUE(dict->GetString("url", &value)); - EXPECT_EQ(kUrl, value); - EXPECT_TRUE(dict->GetString("servers", &value)); - EXPECT_EQ(kServers, value); - EXPECT_TRUE(dict->GetString("constraints", &value)); - EXPECT_EQ(kContraints, value); + VerifyInt(dict, "pid", 1); + VerifyInt(dict, "lid", 2); + VerifyString(dict, "url", kUrl); + VerifyString(dict, "servers", kServers); + VerifyString(dict, "constraints", kContraints); WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); WebRTCInternals::GetInstance()->OnRemovePeerConnection(1, 2); @@ -113,11 +138,8 @@ TEST_F(WebRTCInternalsTest, SendRemovePeerConnectionUpdate) { base::DictionaryValue* dict = NULL; EXPECT_TRUE(observer->value()->GetAsDictionary(&dict)); - int int_value; - EXPECT_TRUE(dict->GetInteger("pid", &int_value)); - EXPECT_EQ(1, int_value); - EXPECT_TRUE(dict->GetInteger("lid", &int_value)); - EXPECT_EQ(2, int_value); + VerifyInt(dict, "pid", 1); + VerifyInt(dict, "lid", 2); WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); } @@ -139,20 +161,122 @@ TEST_F(WebRTCInternalsTest, SendUpdatePeerConnectionUpdate) { base::DictionaryValue* dict = NULL; EXPECT_TRUE(observer->value()->GetAsDictionary(&dict)); - int int_value; - EXPECT_TRUE(dict->GetInteger("pid", &int_value)); - EXPECT_EQ(1, int_value); - EXPECT_TRUE(dict->GetInteger("lid", &int_value)); - EXPECT_EQ(2, int_value); - - std::string value; - EXPECT_TRUE(dict->GetString("type", &value)); - EXPECT_EQ(update_type, value); - EXPECT_TRUE(dict->GetString("value", &value)); - EXPECT_EQ(update_value, value); + VerifyInt(dict, "pid", 1); + VerifyInt(dict, "lid", 2); + VerifyString(dict, "type", update_type); + VerifyString(dict, "value", update_value); WebRTCInternals::GetInstance()->OnRemovePeerConnection(1, 2); WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); } +TEST_F(WebRTCInternalsTest, AddGetUserMedia) { + scoped_ptr<MockWebRTCInternalsProxy> observer(new MockWebRTCInternalsProxy()); + + // Add one observer before "getUserMedia". + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + + const int rid = 1; + const int pid = 2; + const std::string audio_constraint = "aaa"; + const std::string video_constraint = "vvv"; + WebRTCInternals::GetInstance()->OnGetUserMedia( + rid, pid, kUrl, true, true, audio_constraint, video_constraint); + + EXPECT_EQ("addGetUserMedia", observer->command()); + VerifyGetUserMediaData( + observer->value(), rid, pid, kUrl, audio_constraint, video_constraint); + + WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); +} + +TEST_F(WebRTCInternalsTest, SendAllUpdateWithGetUserMedia) { + const int rid = 1; + const int pid = 2; + const std::string audio_constraint = "aaa"; + const std::string video_constraint = "vvv"; + WebRTCInternals::GetInstance()->OnGetUserMedia( + rid, pid, kUrl, true, true, audio_constraint, video_constraint); + + scoped_ptr<MockWebRTCInternalsProxy> observer(new MockWebRTCInternalsProxy()); + // Add one observer after "getUserMedia". + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->UpdateObserver(observer.get()); + + EXPECT_EQ("addGetUserMedia", observer->command()); + VerifyGetUserMediaData( + observer->value(), rid, pid, kUrl, audio_constraint, video_constraint); + + WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); +} + +TEST_F(WebRTCInternalsTest, SendAllUpdatesWithPeerConnectionUpdate) { + const int rid = 0, pid = 1, lid = 2; + const std::string update_type = "fakeType"; + const std::string update_value = "fakeValue"; + + WebRTCInternals::GetInstance()->OnAddPeerConnection( + rid, pid, lid, kUrl, kServers, kContraints); + WebRTCInternals::GetInstance()->OnUpdatePeerConnection( + pid, lid, update_type, update_value); + + scoped_ptr<MockWebRTCInternalsProxy> observer(new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + + WebRTCInternals::GetInstance()->UpdateObserver(observer.get()); + + EXPECT_EQ("updateAllPeerConnections", observer->command()); + + base::ListValue* list = NULL; + EXPECT_TRUE(observer->value()->GetAsList(&list)); + EXPECT_EQ(1U, list->GetSize()); + + base::DictionaryValue* dict = NULL; + EXPECT_TRUE((*list->begin())->GetAsDictionary(&dict)); + + VerifyInt(dict, "rid", rid); + VerifyInt(dict, "pid", pid); + VerifyInt(dict, "lid", lid); + VerifyString(dict, "url", kUrl); + VerifyString(dict, "servers", kServers); + VerifyString(dict, "constraints", kContraints); + + base::ListValue* log = NULL; + EXPECT_TRUE(dict->GetList("log", &log)); + EXPECT_EQ(1U, log->GetSize()); + + EXPECT_TRUE((*log->begin())->GetAsDictionary(&dict)); + VerifyString(dict, "type", update_type); + VerifyString(dict, "value", update_value); +} + +TEST_F(WebRTCInternalsTest, OnAddStats) { + const int rid = 0, pid = 1, lid = 2; + scoped_ptr<MockWebRTCInternalsProxy> observer(new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->OnAddPeerConnection( + rid, pid, lid, kUrl, kServers, kContraints); + + base::ListValue list; + list.AppendString("xxx"); + list.AppendString("yyy"); + WebRTCInternals::GetInstance()->OnAddStats(pid, lid, list); + + EXPECT_EQ("addStats", observer->command()); + base::DictionaryValue* dict = NULL; + EXPECT_TRUE(observer->value()->GetAsDictionary(&dict)); + + VerifyInt(dict, "pid", pid); + VerifyInt(dict, "lid", lid); + VerifyList(dict, "reports", list); +} + +TEST_F(WebRTCInternalsTest, AecRecordingFileSelectionCanceled) { + scoped_ptr<MockWebRTCInternalsProxy> observer(new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->FileSelectionCanceled(NULL); + EXPECT_EQ("aecRecordingFileSelectionCancelled", observer->command()); + EXPECT_EQ(NULL, observer->value()); +} + } // namespace content |