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

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: Remove now unnecessary line 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
« no previous file with comments | « content/renderer/media/android/webmediasession_android.cc ('k') | ipc/ipc_message_start.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
philipj_slow 2015/12/04 14:01:04 kRoutingID to match GetRoutingID()?
davve 2015/12/04 14:52:55 kRouteId seems to be the popular name, so keeping
17
18 } // anonymous namespace
19
13 class WebMediaSessionTest : public testing::Test { 20 class WebMediaSessionTest : public testing::Test {
14 public: 21 public:
22 void OnSuccess() { ++success_count_; }
23 void OnError() { ++error_count_; }
24
15 bool SessionManagerHasSession(RendererMediaSessionManager* session_manager, 25 bool SessionManagerHasSession(RendererMediaSessionManager* session_manager,
16 WebMediaSessionAndroid* session) { 26 WebMediaSessionAndroid* session) {
17 for (auto& iter : session_manager->sessions_) { 27 for (auto& iter : session_manager->sessions_) {
18 if (iter.second == session) 28 if (iter.second == session)
19 return true; 29 return true;
20 } 30 }
21 return false; 31 return false;
22 } 32 }
23 33
24 bool IsSessionManagerEmpty(RendererMediaSessionManager* session_manager) { 34 bool IsSessionManagerEmpty(RendererMediaSessionManager* session_manager) {
25 return session_manager->sessions_.empty(); 35 return session_manager->sessions_.empty();
26 } 36 }
37
38 protected:
39 int success_count_ = 0;
40 int error_count_ = 0;
41 };
42
43 class TestActivateCallback : public blink::WebMediaSessionActivateCallback {
44 public:
45 TestActivateCallback(WebMediaSessionTest* test) : test_(test) {}
46
47 private:
48 void onSuccess() override { test_->OnSuccess(); }
49 void onError(const blink::WebMediaSessionError&) override {
50 test_->OnError();
51 }
52
53 WebMediaSessionTest* test_;
54 };
55
56 class TestDeactivateCallback : public blink::WebMediaSessionDeactivateCallback {
57 public:
58 TestDeactivateCallback(WebMediaSessionTest* test) : test_(test) {}
59
60 private:
61 void onSuccess() override { test_->OnSuccess(); }
62 void onError() override { test_->OnError(); }
63
64 WebMediaSessionTest* test_;
27 }; 65 };
28 66
29 TEST_F(WebMediaSessionTest, TestRegistration) { 67 TEST_F(WebMediaSessionTest, TestRegistration) {
30 scoped_ptr<RendererMediaSessionManager> session_manager( 68 scoped_ptr<RendererMediaSessionManager> session_manager(
31 new RendererMediaSessionManager(nullptr)); 69 new RendererMediaSessionManager(nullptr));
32 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get())); 70 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get()));
33 { 71 {
34 scoped_ptr<WebMediaSessionAndroid> session( 72 scoped_ptr<WebMediaSessionAndroid> session(
35 new WebMediaSessionAndroid(session_manager.get())); 73 new WebMediaSessionAndroid(session_manager.get()));
36 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session.get())); 74 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()); 114 new WebMediaSessionAndroid(session_manager.get());
77 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2)); 115 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2));
78 116
79 delete session1; 117 delete session1;
80 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2)); 118 EXPECT_TRUE(SessionManagerHasSession(session_manager.get(), session2));
81 119
82 delete session2; 120 delete session2;
83 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get())); 121 EXPECT_TRUE(IsSessionManagerEmpty(session_manager.get()));
84 } 122 }
85 123
124 TEST_F(WebMediaSessionTest, ActivationOutOfOrder) {
125 scoped_ptr<RendererMediaSessionManager> session_manager(
126 new RendererMediaSessionManager(nullptr));
127
128 scoped_ptr<WebMediaSessionAndroid> session(
129 new WebMediaSessionAndroid(session_manager.get()));
130
131 // Request activate three times
132 session->activate(new TestActivateCallback(this)); // request 1
133 session->activate(new TestActivateCallback(this)); // request 2
134 session->activate(new TestActivateCallback(this)); // request 3
135
136 // Confirm activation out of order
137 session_manager->OnMessageReceived(
138 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 3, true));
139
140 session_manager->OnMessageReceived(
141 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
142
143 session_manager->OnMessageReceived(
144 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
145
146 EXPECT_EQ(3, success_count_);
147 EXPECT_EQ(0, error_count_);
148 }
149
150 TEST_F(WebMediaSessionTest, ActivationInOrder) {
151 scoped_ptr<RendererMediaSessionManager> session_manager(
152 new RendererMediaSessionManager(nullptr));
153
154 scoped_ptr<WebMediaSessionAndroid> session(
155 new WebMediaSessionAndroid(session_manager.get()));
156
157 // Request activate three times
158 session->activate(new TestActivateCallback(this)); // request 1
159 session_manager->OnMessageReceived(
160 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
161
162 session->activate(new TestActivateCallback(this)); // request 2
163 session_manager->OnMessageReceived(
164 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
165
166 session->activate(new TestActivateCallback(this)); // request 3
167 session_manager->OnMessageReceived(
168 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 3, true));
169
170 EXPECT_EQ(3, success_count_);
171 EXPECT_EQ(0, error_count_);
172 }
173
174 TEST_F(WebMediaSessionTest, ActivationInFlight) {
175 scoped_ptr<RendererMediaSessionManager> session_manager(
176 new RendererMediaSessionManager(nullptr));
177
178 scoped_ptr<WebMediaSessionAndroid> session(
179 new WebMediaSessionAndroid(session_manager.get()));
180
181 session->activate(new TestActivateCallback(this)); // request 1
182 session->activate(new TestActivateCallback(this)); // request 2
183 session->activate(new TestActivateCallback(this)); // request 3
184
185 session_manager->OnMessageReceived(
186 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
187
188 session->activate(new TestActivateCallback(this)); // request 4
189 session->activate(new TestActivateCallback(this)); // request 5
190
191 session_manager->OnMessageReceived(
192 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 3, true));
193 session_manager->OnMessageReceived(
194 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
195 session_manager->OnMessageReceived(
196 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 5, true));
197 session_manager->OnMessageReceived(
198 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 4, true));
199
200 EXPECT_EQ(5, success_count_);
201 EXPECT_EQ(0, error_count_);
202 }
203
204 TEST_F(WebMediaSessionTest, ActivationFailure) {
205 scoped_ptr<RendererMediaSessionManager> session_manager(
206 new RendererMediaSessionManager(nullptr));
207
208 scoped_ptr<WebMediaSessionAndroid> session(
209 new WebMediaSessionAndroid(session_manager.get()));
210
211 session->activate(new TestActivateCallback(this)); // request 1
212 session->activate(new TestActivateCallback(this)); // request 2
213 session->activate(new TestActivateCallback(this)); // request 3
214
215 session_manager->OnMessageReceived(
216 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
217 EXPECT_EQ(1, success_count_);
218 EXPECT_EQ(0, error_count_);
219 session_manager->OnMessageReceived(
220 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, false));
221 EXPECT_EQ(1, success_count_);
222 EXPECT_EQ(1, error_count_);
223 session_manager->OnMessageReceived(
224 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 3, true));
225 EXPECT_EQ(2, success_count_);
226 EXPECT_EQ(1, error_count_);
227 }
228
229 TEST_F(WebMediaSessionTest, Deactivation) {
230 scoped_ptr<RendererMediaSessionManager> session_manager(
231 new RendererMediaSessionManager(nullptr));
232
233 scoped_ptr<WebMediaSessionAndroid> session(
234 new WebMediaSessionAndroid(session_manager.get()));
235
236 // Request deactivate three times
237 session->deactivate(new TestDeactivateCallback(this)); // request 1
238 session->deactivate(new TestDeactivateCallback(this)); // request 2
239 session->deactivate(new TestDeactivateCallback(this)); // request 3
240 session_manager->OnMessageReceived(
241 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 1));
242 EXPECT_EQ(1, success_count_);
243 session_manager->OnMessageReceived(
244 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 2));
245 EXPECT_EQ(2, success_count_);
246 session_manager->OnMessageReceived(
247 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 3));
248 EXPECT_EQ(3, success_count_);
249 EXPECT_EQ(0, error_count_);
250 }
251
252 TEST_F(WebMediaSessionTest, UnsolicitedResponses) {
253 scoped_ptr<RendererMediaSessionManager> session_manager(
254 new RendererMediaSessionManager(nullptr));
255
256 scoped_ptr<WebMediaSessionAndroid> session(
257 new WebMediaSessionAndroid(session_manager.get()));
258
259 session_manager->OnMessageReceived(
260 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, false));
261 session_manager->OnMessageReceived(
262 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 2, true));
263 session_manager->OnMessageReceived(
264 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 3, false));
265
266 session_manager->OnMessageReceived(
267 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 1));
268 session_manager->OnMessageReceived(
269 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 2));
270 session_manager->OnMessageReceived(
271 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 3));
272
273 EXPECT_EQ(0, success_count_);
274 EXPECT_EQ(0, error_count_);
275 }
276
277 TEST_F(WebMediaSessionTest, DoubleResponses) {
278 scoped_ptr<RendererMediaSessionManager> session_manager(
279 new RendererMediaSessionManager(nullptr));
280
281 scoped_ptr<WebMediaSessionAndroid> session(
282 new WebMediaSessionAndroid(session_manager.get()));
283
284 session->activate(new TestActivateCallback(this)); // request 1
285
286 session_manager->OnMessageReceived(
287 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
288 session_manager->OnMessageReceived(
289 MediaSessionMsg_DidActivate(kRouteId, session->session_id(), 1, true));
290 EXPECT_EQ(1, success_count_);
291 EXPECT_EQ(0, error_count_);
292
293 session->deactivate(new TestDeactivateCallback(this)); // request 1
294
295 session_manager->OnMessageReceived(
296 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 1));
297 session_manager->OnMessageReceived(
298 MediaSessionMsg_DidDeactivate(kRouteId, session->session_id(), 1));
299
300 EXPECT_EQ(2, success_count_);
301 EXPECT_EQ(0, error_count_);
302 }
303
86 } // namespace content 304 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/android/webmediasession_android.cc ('k') | ipc/ipc_message_start.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698