Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: content/browser/media/media_internals_unittest.cc

Issue 12153002: Move chrome://media-internals to content. This allows us to hide implementation details from the pu… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/media/media_internals.h" 5 #include "content/browser/media/media_internals.h"
6 6
7 #include "base/bind.h"
7 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop.h" 9 #include "base/message_loop.h"
9 #include "chrome/browser/media/media_internals_observer.h" 10 #include "content/browser/media/media_internals.h"
10 #include "content/public/test/test_browser_thread.h" 11 #include "content/public/test/test_browser_thread.h"
11 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 class MockMediaInternalsObserver : public MediaInternalsObserver { 15 namespace content {
16 namespace {
17
18 class MockObserverBaseClass {
15 public: 19 public:
20 ~MockObserverBaseClass() {}
21 virtual void OnUpdate(const string16& javascript) = 0;
22 };
23
24 class MockMediaInternalsObserver : public MockObserverBaseClass {
25 public:
26 virtual ~MockMediaInternalsObserver() {}
16 MOCK_METHOD1(OnUpdate, void(const string16& javascript)); 27 MOCK_METHOD1(OnUpdate, void(const string16& javascript));
17 }; 28 };
18 29
30 } // namespace
31
19 class MediaInternalsTest : public testing::Test { 32 class MediaInternalsTest : public testing::Test {
20 public: 33 public:
21 MediaInternalsTest() : io_thread_(content::BrowserThread::IO, &loop_) {} 34 MediaInternalsTest() : io_thread_(BrowserThread::IO, &loop_) {}
22 DictionaryValue* data() { 35 DictionaryValue* data() {
23 return &internals_->data_; 36 return &internals_->data_;
24 } 37 }
25 38
26 void DeleteItem(const std::string& item) { 39 void DeleteItem(const std::string& item) {
27 internals_->DeleteItem(item); 40 internals_->DeleteItem(item);
28 } 41 }
29 42
30 void UpdateItem(const std::string& item, const std::string& property, 43 void UpdateItem(const std::string& item, const std::string& property,
31 Value* value) { 44 Value* value) {
32 internals_->UpdateItem("", item, property, value); 45 internals_->UpdateItem("", item, property, value);
33 } 46 }
34 47
35 void SendUpdate(const std::string& function, Value* value) { 48 void SendUpdate(const std::string& function, Value* value) {
36 internals_->SendUpdate(function, value); 49 internals_->SendUpdate(function, value);
37 } 50 }
38 51
39 protected: 52 protected:
40 virtual void SetUp() { 53 virtual void SetUp() {
41 internals_.reset(new MediaInternals()); 54 internals_.reset(new MediaInternals());
42 } 55 }
43 56
44 MessageLoop loop_; 57 MessageLoop loop_;
45 content::TestBrowserThread io_thread_; 58 TestBrowserThread io_thread_;
46 scoped_ptr<MediaInternals> internals_; 59 scoped_ptr<MediaInternals> internals_;
47 }; 60 };
48 61
49 TEST_F(MediaInternalsTest, UpdateAddsNewItem) { 62 TEST_F(MediaInternalsTest, UpdateAddsNewItem) {
50 UpdateItem("some.item", "testing", Value::CreateBooleanValue(true)); 63 UpdateItem("some.item", "testing", Value::CreateBooleanValue(true));
51 bool testing = false; 64 bool testing = false;
52 std::string id; 65 std::string id;
53 66
54 EXPECT_TRUE(data()->GetBoolean("some.item.testing", &testing)); 67 EXPECT_TRUE(data()->GetBoolean("some.item.testing", &testing));
55 EXPECT_TRUE(testing); 68 EXPECT_TRUE(testing);
(...skipping 19 matching lines...) Expand all
75 EXPECT_TRUE(data()->GetString("some.item.id", &id)); 88 EXPECT_TRUE(data()->GetString("some.item.id", &id));
76 EXPECT_EQ(id, "some.item"); 89 EXPECT_EQ(id, "some.item");
77 } 90 }
78 91
79 TEST_F(MediaInternalsTest, ObserversReceiveNotifications) { 92 TEST_F(MediaInternalsTest, ObserversReceiveNotifications) {
80 scoped_ptr<MockMediaInternalsObserver> observer( 93 scoped_ptr<MockMediaInternalsObserver> observer(
81 new MockMediaInternalsObserver()); 94 new MockMediaInternalsObserver());
82 95
83 EXPECT_CALL(*observer.get(), OnUpdate(testing::_)).Times(1); 96 EXPECT_CALL(*observer.get(), OnUpdate(testing::_)).Times(1);
84 97
85 internals_->AddObserver(observer.get()); 98 MediaInternals::UpdateCallback callback = base::Bind(
99 &MockMediaInternalsObserver::OnUpdate, base::Unretained(observer.get()));
100
101 internals_->AddUpdateCallback(callback);
86 SendUpdate("fn", data()); 102 SendUpdate("fn", data());
87 } 103 }
88 104
89 TEST_F(MediaInternalsTest, RemovedObserversReceiveNoNotifications) { 105 TEST_F(MediaInternalsTest, RemovedObserversReceiveNoNotifications) {
90 scoped_ptr<MockMediaInternalsObserver> observer( 106 scoped_ptr<MockMediaInternalsObserver> observer(
91 new MockMediaInternalsObserver()); 107 new MockMediaInternalsObserver());
92 108
93 EXPECT_CALL(*observer.get(), OnUpdate(testing::_)).Times(0); 109 EXPECT_CALL(*observer.get(), OnUpdate(testing::_)).Times(0);
94 110
95 internals_->AddObserver(observer.get()); 111 MediaInternals::UpdateCallback callback = base::Bind(
96 internals_->RemoveObserver(observer.get()); 112 &MockMediaInternalsObserver::OnUpdate, base::Unretained(observer.get()));
113
114 internals_->AddUpdateCallback(callback);
115 internals_->RemoveUpdateCallback(callback);
97 SendUpdate("fn", data()); 116 SendUpdate("fn", data());
98 } 117 }
99 118
100 TEST_F(MediaInternalsTest, DeleteRemovesItem) { 119 TEST_F(MediaInternalsTest, DeleteRemovesItem) {
101 Value* out; 120 Value* out;
102 121
103 UpdateItem("some.item", "testing", Value::CreateNullValue()); 122 UpdateItem("some.item", "testing", Value::CreateNullValue());
104 EXPECT_TRUE(data()->Get("some.item", &out)); 123 EXPECT_TRUE(data()->Get("some.item", &out));
105 EXPECT_TRUE(data()->Get("some", &out)); 124 EXPECT_TRUE(data()->Get("some", &out));
106 125
107 DeleteItem("some.item"); 126 DeleteItem("some.item");
108 EXPECT_FALSE(data()->Get("some.item", &out)); 127 EXPECT_FALSE(data()->Get("some.item", &out));
109 EXPECT_TRUE(data()->Get("some", &out)); 128 EXPECT_TRUE(data()->Get("some", &out));
110 129
111 DeleteItem("some"); 130 DeleteItem("some");
112 EXPECT_FALSE(data()->Get("some.item", &out)); 131 EXPECT_FALSE(data()->Get("some.item", &out));
113 EXPECT_FALSE(data()->Get("some", &out)); 132 EXPECT_FALSE(data()->Get("some", &out));
114 } 133 }
134
135 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698