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

Side by Side Diff: content/renderer/media/android/webmediasession_android_unittest.cc

Issue 1441883003: Hook up RendererMediaSessionManager with browser side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments Created 5 years 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/renderer/media/android/webmediasession_android.h" 5 #include "content/renderer/media/android/webmediasession_android.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "content/common/media/media_session_messages_android.h"
8 #include "content/renderer/media/android/renderer_media_session_manager.h" 9 #include "content/renderer/media/android/renderer_media_session_manager.h"
9 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
10 11
11 namespace content { 12 namespace content {
12 13
14 namespace {
15
16 const int kRouteId = 0;
17
18 } // anonymous namespace
19
13 class WebMediaSessionTest : public testing::Test { 20 class WebMediaSessionTest : public testing::Test {
14 public: 21 public:
22 WebMediaSessionTest() : success_count_(0), error_count_(0) {}
23
24 void OnSuccess() { ++success_count_; }
25 void OnError() { ++error_count_; }
26
15 bool SessionManagerHasSession(RendererMediaSessionManager* session_manager, 27 bool SessionManagerHasSession(RendererMediaSessionManager* session_manager,
16 WebMediaSessionAndroid* session) { 28 WebMediaSessionAndroid* session) {
17 for (auto& iter : session_manager->sessions_) { 29 for (auto& iter : session_manager->sessions_) {
18 if (iter.second == session) 30 if (iter.second == session)
19 return true; 31 return true;
20 } 32 }
21 return false; 33 return false;
22 } 34 }
23 35
24 bool IsSessionManagerEmpty(RendererMediaSessionManager* session_manager) { 36 bool IsSessionManagerEmpty(RendererMediaSessionManager* session_manager) {
25 return session_manager->sessions_.empty(); 37 return session_manager->sessions_.empty();
26 } 38 }
39
40 protected:
41 int success_count_;
mlamouri (slow - plz ping) 2015/12/02 15:53:31 I think you can do `int success_count_ = 0;` and r
davve 2015/12/04 12:43:09 Done.
42 int error_count_;
43 };
44
45 class TestActivateCallback : public blink::WebMediaSessionActivateCallback {
46 public:
47 TestActivateCallback(WebMediaSessionTest* test) : test_(test) {}
48
49 private:
50 void onSuccess() override { test_->OnSuccess(); }
51 void onError(const blink::WebMediaSessionError&) override {
52 test_->OnError();
53 }
54
55 WebMediaSessionTest* test_;
56 };
57
58 class TestDeactivateCallback : public blink::WebMediaSessionDeactivateCallback {
59 public:
60 TestDeactivateCallback(WebMediaSessionTest* test) : test_(test) {}
61
62 private:
63 void onSuccess() override { test_->OnSuccess(); }
64 void onError() override { test_->OnError(); }
65
66 WebMediaSessionTest* test_;
mlamouri (slow - plz ping) 2015/12/02 15:53:31 I think you are leaking `test_`. Should you use a
davve 2015/12/04 12:43:09 Not sure I follow. WebMediaSessionTest is the test
27 }; 67 };
28 68
29 TEST_F(WebMediaSessionTest, TestRegistration) { 69 TEST_F(WebMediaSessionTest, TestRegistration) {
30 scoped_ptr<RendererMediaSessionManager> session_manager( 70 scoped_ptr<RendererMediaSessionManager> session_manager(
31 new RendererMediaSessionManager(nullptr)); 71 new RendererMediaSessionManager(nullptr));
32 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get())); 72 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get()));
33 { 73 {
34 scoped_ptr<WebMediaSessionAndroid> session( 74 scoped_ptr<WebMediaSessionAndroid> session(
35 new WebMediaSessionAndroid(session_manager.get())); 75 new WebMediaSessionAndroid(session_manager.get()));
36 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session.get())); 76 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session.get()));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 new WebMediaSessionAndroid(session_manager.get()); 116 new WebMediaSessionAndroid(session_manager.get());
77 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2)); 117 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2));
78 118
79 delete session1; 119 delete session1;
80 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2)); 120 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2));
81 121
82 delete session2; 122 delete session2;
83 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get())); 123 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get()));
84 } 124 }
85 125
126 TEST_F(WebMediaSessionTest, ActivationOutOfOrder) {
127 scoped_ptr<RendererMediaSessionManager> session_manager(
128 new RendererMediaSessionManager(nullptr));
129
130 scoped_ptr<WebMediaSessionAndroid> session(
131 new WebMediaSessionAndroid(session_manager.get()));
132
133 // Request activate three times
134 session->activate(new TestActivateCallback(this)); // activation 0
135 session->activate(new TestActivateCallback(this)); // activation 1
136 session->activate(new TestActivateCallback(this)); // activation 2
137
138 // Confirm activation out of order
139 session_manager->OnMessageReceived(
140 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
141
142 session_manager->OnMessageReceived(
143 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
144
145 session_manager->OnMessageReceived(
146 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 0, true));
147
148 EXPECT_EQ(3, success_count_);
149 EXPECT_EQ(0, error_count_);
150 }
151
152 TEST_F(WebMediaSessionTest, ActivationInOrder) {
153 scoped_ptr<RendererMediaSessionManager> session_manager(
154 new RendererMediaSessionManager(nullptr));
155
156 scoped_ptr<WebMediaSessionAndroid> session(
157 new WebMediaSessionAndroid(session_manager.get()));
158
159 // Request activate three times
160 session->activate(new TestActivateCallback(this)); // activation 0
161 session_manager->OnMessageReceived(
162 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 0, true));
163
164 session->activate(new TestActivateCallback(this)); // activation 1
165 session_manager->OnMessageReceived(
166 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
167
168 session->activate(new TestActivateCallback(this)); // activation 2
169 session_manager->OnMessageReceived(
170 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
171
172 EXPECT_EQ(3, success_count_);
173 EXPECT_EQ(0, error_count_);
174 }
175
176 TEST_F(WebMediaSessionTest, ActivationInFlight) {
177 scoped_ptr<RendererMediaSessionManager> session_manager(
178 new RendererMediaSessionManager(nullptr));
179
180 scoped_ptr<WebMediaSessionAndroid> session(
181 new WebMediaSessionAndroid(session_manager.get()));
182
183 // Request activate three times
184 session->activate(new TestActivateCallback(this)); // activation 0
185 session->activate(new TestActivateCallback(this)); // activation 1
186 session->activate(new TestActivateCallback(this)); // activation 2
187
188 session_manager->OnMessageReceived(
189 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 0, true));
190
191 session->activate(new TestActivateCallback(this)); // activation 4
192 session->activate(new TestActivateCallback(this)); // activation 5
193
194 session_manager->OnMessageReceived(
195 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
196 session_manager->OnMessageReceived(
197 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
198 session_manager->OnMessageReceived(
199 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 4, true));
200 session_manager->OnMessageReceived(
201 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 3, true));
202
203 EXPECT_EQ(5, success_count_);
204 EXPECT_EQ(0, error_count_);
205 }
206
207 TEST_F(WebMediaSessionTest, ActivationFailure) {
208 scoped_ptr<RendererMediaSessionManager> session_manager(
209 new RendererMediaSessionManager(nullptr));
210
211 scoped_ptr<WebMediaSessionAndroid> session(
212 new WebMediaSessionAndroid(session_manager.get()));
213
214 // Request activate three times
215 session->activate(new TestActivateCallback(this)); // activation 0
216 session->activate(new TestActivateCallback(this)); // activation 1
217 session->activate(new TestActivateCallback(this)); // activation 2
218
219 session_manager->OnMessageReceived(
220 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
221 session_manager->OnMessageReceived(
222 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 0, false));
223 session_manager->OnMessageReceived(
224 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
225
226 EXPECT_EQ(2, success_count_);
227 EXPECT_EQ(1, error_count_);
228 }
229
230 TEST_F(WebMediaSessionTest, Deactivation) {
231 scoped_ptr<RendererMediaSessionManager> session_manager(
232 new RendererMediaSessionManager(nullptr));
233
234 scoped_ptr<WebMediaSessionAndroid> session(
235 new WebMediaSessionAndroid(session_manager.get()));
236
237 // Request deactivate three times
238 session->deactivate(new TestDeactivateCallback(this)); // deactivation 0
239 session->deactivate(new TestDeactivateCallback(this)); // deactivation 1
240 session->deactivate(new TestDeactivateCallback(this)); // deactivation 2
241 session_manager->OnMessageReceived(
242 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 0));
243 session_manager->OnMessageReceived(
244 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 1));
245 session_manager->OnMessageReceived(
246 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 2));
247
248 EXPECT_EQ(3, success_count_);
249 EXPECT_EQ(0, error_count_);
250 }
251
mlamouri (slow - plz ping) 2015/12/02 15:53:31 Can you add a test where you try to send a message
davve 2015/12/04 12:43:09 Done.
86 } // namespace content 252 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698