summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/media/webrtc_internals_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/media/webrtc_internals_unittest.cc')
-rw-r--r--chromium/content/browser/media/webrtc_internals_unittest.cc202
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