diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-29 21:40:04 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-29 21:40:04 +0000 |
commit | 64ccac3e800377e6fb4f118fbb6da07bc693f275 (patch) | |
tree | 404fc438e373e6287a26750606af4770cf3259c7 /content/browser/media/webrtc_internals_unittest.cc | |
parent | a1f608e6fcd06053da85de6a707602c63bef62e9 (diff) | |
download | chromium_src-64ccac3e800377e6fb4f118fbb6da07bc693f275.zip chromium_src-64ccac3e800377e6fb4f118fbb6da07bc693f275.tar.gz chromium_src-64ccac3e800377e6fb4f118fbb6da07bc693f275.tar.bz2 |
Add a WebUIControllerFactory in content and move chrome://webrtc-internals to content.
BUG=169170
Review URL: https://codereview.chromium.org/12089034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179425 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/media/webrtc_internals_unittest.cc')
-rw-r--r-- | content/browser/media/webrtc_internals_unittest.cc | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/content/browser/media/webrtc_internals_unittest.cc b/content/browser/media/webrtc_internals_unittest.cc new file mode 100644 index 0000000..b90a4176 --- /dev/null +++ b/content/browser/media/webrtc_internals_unittest.cc @@ -0,0 +1,160 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/memory/scoped_ptr.h" +#include "base/message_loop.h" +#include "base/values.h" +#include "content/browser/media/webrtc_internals.h" +#include "content/browser/media/webrtc_internals_ui_observer.h" +#include "content/public/test/test_browser_thread.h" +#include "testing/gtest/include/gtest/gtest.h" + +using base::Value; +using base::DictionaryValue; +using std::string; + +namespace content { + +namespace { +static const string kContraints = "c"; +static const string kServers = "s"; +static const string kUrl = "u"; + +class MockWebRTCInternalsProxy : public WebRTCInternalsUIObserver { + public: + void OnUpdate(const string& command, const Value* value) OVERRIDE { + command_ = command; + value_.reset(value->DeepCopy()); + } + + string command() { + return command_; + } + + Value* value() { + return value_.get(); + } + + private: + string command_; + scoped_ptr<Value> value_; +}; + +class WebRTCInternalsTest : public testing::Test { + public: + WebRTCInternalsTest() : io_thread_(BrowserThread::UI, &io_loop_) {} + + protected: + string ExpectedInfo(string prefix, + string id, + string suffix) { + static const string kstatic_part1 = string( + "{\"constraints\":\"c\","); + static const string kstatic_part2 = string( + ",\"servers\":\"s\",\"url\":\"u\"}"); + return prefix + kstatic_part1 + id + kstatic_part2 + suffix; + } + + MessageLoop io_loop_; + TestBrowserThread io_thread_; +}; + +} // namespace + +TEST_F(WebRTCInternalsTest, AddRemoveObserver) { + scoped_ptr<MockWebRTCInternalsProxy> observer( + new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); + WebRTCInternals::GetInstance()->AddPeerConnection( + 3, 4, kUrl, kServers, kContraints); + EXPECT_EQ("", observer->command()); + + WebRTCInternals::GetInstance()->RemovePeerConnection(3, 4); +} + +TEST_F(WebRTCInternalsTest, SendAddPeerConnectionUpdate) { + scoped_ptr<MockWebRTCInternalsProxy> observer( + new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->AddPeerConnection( + 1, 2, kUrl, kServers, kContraints); + EXPECT_EQ("addPeerConnection", observer->command()); + + 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); + + 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); + + WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); + WebRTCInternals::GetInstance()->RemovePeerConnection(1, 2); +} + +TEST_F(WebRTCInternalsTest, SendRemovePeerConnectionUpdate) { + scoped_ptr<MockWebRTCInternalsProxy> observer( + new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->AddPeerConnection( + 1, 2, kUrl, kServers, kContraints); + WebRTCInternals::GetInstance()->RemovePeerConnection(1, 2); + EXPECT_EQ("removePeerConnection", observer->command()); + + 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); + + WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); +} + +TEST_F(WebRTCInternalsTest, SendUpdatePeerConnectionUpdate) { + scoped_ptr<MockWebRTCInternalsProxy> observer( + new MockWebRTCInternalsProxy()); + WebRTCInternals::GetInstance()->AddObserver(observer.get()); + WebRTCInternals::GetInstance()->AddPeerConnection( + 1, 2, kUrl, kServers, kContraints); + + const string update_type = "fakeType"; + const string update_value = "fakeValue"; + WebRTCInternals::GetInstance()->UpdatePeerConnection( + 1, 2, update_type, update_value); + + EXPECT_EQ("updatePeerConnection", observer->command()); + + 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); + + string value; + EXPECT_TRUE(dict->GetString("type", &value)); + EXPECT_EQ(update_type, value); + EXPECT_TRUE(dict->GetString("value", &value)); + EXPECT_EQ(update_value, value); + + WebRTCInternals::GetInstance()->RemovePeerConnection(1, 2); + WebRTCInternals::GetInstance()->RemoveObserver(observer.get()); +} + +} // namespace content |