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

Side by Side Diff: chrome/browser/media/router/offscreen_presentation_manager_unittest.cc

Issue 2343013002: [Presentation API] (MR side) 1-UA: notify receiver page when receiver connection becomes available (Closed)
Patch Set: resolve code review comments from Derek Created 4 years, 2 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
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <vector>
6
7 #include "base/bind.h"
8 #include "chrome/browser/media/router/offscreen_presentation_manager.h"
9 #include "chrome/browser/media/router/test_helper.h"
10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 using testing::_;
14
15 namespace media_router {
16
17 namespace {
18 const char kPresentationId[] = "presentationId";
19 const char kPresentationId2[] = "presentationId2";
20 } // namespace
21
22 class MockOffscreenPresentationClient
23 : public content::OffscreenPresentationClient {
24 public:
25 MOCK_METHOD1(SetOffscreenPresentationClient,
26 void(OffscreenPresentationClient*));
27 MOCK_METHOD1(RemoveOffscreenPresentationClient,
28 void(OffscreenPresentationClient*));
29 };
30
31 class OffscreenPresentationManagerTest : public ::testing::Test {
32 public:
33 OffscreenPresentationManager* manager() { return &manager_; }
34
35 void verifyPresentationsSize(size_t expected);
imcheng 2016/09/28 07:28:36 nit: VerifyNumPresentations
zhaobin 2016/09/29 17:20:44 Done.
36 void verifyControllerSize(size_t expected,
imcheng 2016/09/28 07:28:36 nit: VerifyNumControllers
zhaobin 2016/09/29 17:20:44 Done.
37 const OffscreenPresentation* presentation);
38
39 private:
40 OffscreenPresentationManager manager_;
41 };
42
43 class MockReceiverConnectionAvailableCallback {
44 public:
45 MOCK_METHOD2(OnReceiverConnectionAvailable,
46 void(const content::PresentationSessionInfo&,
47 content::OffscreenPresentationClient*));
48 };
49
50 void OffscreenPresentationManagerTest::verifyPresentationsSize(
imcheng 2016/09/28 07:28:36 These helper methods can be inlined.
zhaobin 2016/09/29 17:20:43 Done.
51 size_t expected) {
52 EXPECT_EQ(expected, manager_.offscreen_presentations_.size());
53 }
54
55 void OffscreenPresentationManagerTest::verifyControllerSize(
56 size_t expected,
57 const OffscreenPresentation* presentation) {
58 EXPECT_EQ(expected, presentation->controllers_.size());
59 }
60
61 TEST_F(OffscreenPresentationManagerTest,
62 RegisterControllerCreateNewPresentation) {
imcheng 2016/09/28 07:28:36 nit: I would just name the test RegisterController
zhaobin 2016/09/29 17:20:43 Done.
63 MockOffscreenPresentationClient controller;
64 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
65 &controller);
66 verifyPresentationsSize(1);
67 }
68
69 TEST_F(OffscreenPresentationManagerTest, RegisterOneReceiverDoNothing) {
imcheng 2016/09/28 07:28:36 RegisterReceiver
zhaobin 2016/09/29 17:20:44 Done.
70 MockReceiverConnectionAvailableCallback receiver_callback;
71 manager()->RegisterOffscreenPresentationReceiver(
72 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
73 OnReceiverConnectionAvailable,
74 base::Unretained(&receiver_callback)));
75 verifyPresentationsSize(0);
76 }
77
78 TEST_F(OffscreenPresentationManagerTest, UnregisterControllerNoCrash) {
imcheng 2016/09/28 07:28:36 UnregisterNonexistentController
zhaobin 2016/09/29 17:20:44 Done.
79 MockOffscreenPresentationClient controller;
imcheng 2016/09/28 07:28:36 Unused?
zhaobin 2016/09/29 17:20:44 Done.
80 manager()->UnregisterOffscreenPresentationController(kPresentationId, 1);
81 verifyPresentationsSize(0);
82 }
83
84 TEST_F(OffscreenPresentationManagerTest, UnregisterReceiverNoCrash) {
imcheng 2016/09/28 07:28:36 UnregisterNonexistentReceiver
zhaobin 2016/09/29 17:20:43 Done.
85 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
86 verifyPresentationsSize(0);
87 }
88
89 TEST_F(OffscreenPresentationManagerTest,
90 RegisterControllerCreatePresentationWithTwoControllers) {
imcheng 2016/09/28 07:28:36 RegisterMultipleControllersSamePresentation ?
zhaobin 2016/09/29 17:20:43 Done.
91 MockOffscreenPresentationClient controller1;
92 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
93 &controller1);
94 MockOffscreenPresentationClient controller2;
95 manager()->RegisterOffscreenPresentationController(kPresentationId, 2,
96 &controller2);
97 verifyPresentationsSize(1);
98 }
99
100 TEST_F(OffscreenPresentationManagerTest,
101 RegisterControllerCreateTwoPresentations) {
imcheng 2016/09/28 07:28:36 RegisterMultipleControllersDifferentPresentations
zhaobin 2016/09/29 17:20:44 Done.
102 MockOffscreenPresentationClient controller1;
103 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
104 &controller1);
105 MockOffscreenPresentationClient controller2;
106 manager()->RegisterOffscreenPresentationController(kPresentationId2, 1,
107 &controller2);
108 verifyPresentationsSize(2);
109 }
110
111 TEST_F(OffscreenPresentationManagerTest,
112 RegisterControllerAndReceiverFireOnConnectionAvailable) {
imcheng 2016/09/28 07:28:36 RegisterControllerThenReceiverInvokesCallback ?
zhaobin 2016/09/29 17:20:44 Done.
113 MockOffscreenPresentationClient controller;
114 MockReceiverConnectionAvailableCallback receiver_callback;
115
116 verifyPresentationsSize(0);
117 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
imcheng 2016/09/28 07:28:36 Move this EXPECT to just before RegisterOffscreenP
zhaobin 2016/09/29 17:20:44 Done.
118
119 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
120 &controller);
121 manager()->RegisterOffscreenPresentationReceiver(
122 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
123 OnReceiverConnectionAvailable,
124 base::Unretained(&receiver_callback)));
125 }
126
127 TEST_F(OffscreenPresentationManagerTest, RegisterUnregisterController) {
imcheng 2016/09/28 07:28:36 Combine this case with RegisterController
zhaobin 2016/09/29 17:20:43 Done.
128 MockOffscreenPresentationClient controller;
129 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
130 &controller);
131 manager()->UnregisterOffscreenPresentationController(kPresentationId, 1);
132 verifyPresentationsSize(0);
133 }
134
135 TEST_F(OffscreenPresentationManagerTest, UnregisterReceiverOnly) {
imcheng 2016/09/28 07:28:36 UnregisterReceiverFromConnectedPresentation
zhaobin 2016/09/29 17:20:44 Done.
136 MockOffscreenPresentationClient controller;
137 MockReceiverConnectionAvailableCallback receiver_callback;
138 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
139
140 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
141 &controller);
142 manager()->RegisterOffscreenPresentationReceiver(
143 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
144 OnReceiverConnectionAvailable,
145 base::Unretained(&receiver_callback)));
146 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
147
148 verifyPresentationsSize(0);
149 }
150
151 TEST_F(OffscreenPresentationManagerTest, UnregisterControllerOnly) {
imcheng 2016/09/28 07:28:36 UnregisterControllerFromConnectedPresentation
zhaobin 2016/09/29 17:20:44 Done.
152 MockOffscreenPresentationClient controller;
153 MockReceiverConnectionAvailableCallback receiver_callback;
154 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
155
156 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
157 &controller);
158 manager()->RegisterOffscreenPresentationReceiver(
159 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
160 OnReceiverConnectionAvailable,
161 base::Unretained(&receiver_callback)));
162
163 manager()->UnregisterOffscreenPresentationController(kPresentationId, 1);
164 verifyPresentationsSize(1);
165 }
166
167 TEST_F(OffscreenPresentationManagerTest, UnregisterReceiverController) {
168 MockOffscreenPresentationClient controller;
169 MockReceiverConnectionAvailableCallback receiver_callback;
170 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
171
172 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
173 &controller);
174 manager()->RegisterOffscreenPresentationReceiver(
175 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
176 OnReceiverConnectionAvailable,
177 base::Unretained(&receiver_callback)));
178
179 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
180 manager()->UnregisterOffscreenPresentationController(kPresentationId, 1);
181
182 verifyPresentationsSize(0);
183 }
184
185 TEST_F(OffscreenPresentationManagerTest, UnregisterControllerReceiver) {
186 MockOffscreenPresentationClient controller;
187 MockReceiverConnectionAvailableCallback receiver_callback;
188 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
189
190 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
191 &controller);
192 manager()->RegisterOffscreenPresentationReceiver(
193 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
194 OnReceiverConnectionAvailable,
195 base::Unretained(&receiver_callback)));
196
197 manager()->UnregisterOffscreenPresentationController(kPresentationId, 1);
198 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
199
200 verifyPresentationsSize(0);
201 }
202
203 TEST_F(OffscreenPresentationManagerTest,
204 RegisterTwoControllersThenReceiverFireOnConnectionAvailableTwice) {
205 MockOffscreenPresentationClient controller;
206 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
207 &controller);
208 MockOffscreenPresentationClient controller2;
209 manager()->RegisterOffscreenPresentationController(kPresentationId, 2,
210 &controller2);
211
212 MockReceiverConnectionAvailableCallback receiver_callback;
213 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
214 EXPECT_CALL(receiver_callback,
215 OnReceiverConnectionAvailable(_, &controller2));
216
217 manager()->RegisterOffscreenPresentationReceiver(
218 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
219 OnReceiverConnectionAvailable,
220 base::Unretained(&receiver_callback)));
221 }
222
223 TEST_F(OffscreenPresentationManagerTest,
224 RegisterControllerReceiverConontrollerFireOnConnectionAvailableTwice) {
225 MockOffscreenPresentationClient controller;
226 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
227 &controller);
228 MockReceiverConnectionAvailableCallback receiver_callback;
229 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
230 manager()->RegisterOffscreenPresentationReceiver(
231 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
232 OnReceiverConnectionAvailable,
233 base::Unretained(&receiver_callback)));
234
235 MockOffscreenPresentationClient controller2;
236 EXPECT_CALL(receiver_callback,
237 OnReceiverConnectionAvailable(_, &controller2));
238 manager()->RegisterOffscreenPresentationController(kPresentationId, 2,
239 &controller2);
240 }
241
242 TEST_F(OffscreenPresentationManagerTest,
243 OnePresentationUnregisterFirstController) {
244 MockOffscreenPresentationClient controller;
245 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
246 &controller);
247 MockOffscreenPresentationClient controller2;
248 manager()->RegisterOffscreenPresentationController(kPresentationId, 2,
249 &controller2);
250 MockReceiverConnectionAvailableCallback receiver_callback;
251 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, _)).Times(2);
252
253 manager()->RegisterOffscreenPresentationReceiver(
254 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
255 OnReceiverConnectionAvailable,
256 base::Unretained(&receiver_callback)));
257 manager()->UnregisterOffscreenPresentationController(kPresentationId, 1);
258 manager()->UnregisterOffscreenPresentationController(kPresentationId, 2);
259
260 verifyPresentationsSize(1);
261 }
262
263 TEST_F(OffscreenPresentationManagerTest, TwoPresentations) {
264 MockOffscreenPresentationClient controller;
265 manager()->RegisterOffscreenPresentationController(kPresentationId, 1,
266 &controller);
267 MockReceiverConnectionAvailableCallback receiver_callback;
268 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailable(_, &controller));
269 manager()->RegisterOffscreenPresentationReceiver(
270 kPresentationId, base::Bind(&MockReceiverConnectionAvailableCallback::
271 OnReceiverConnectionAvailable,
272 base::Unretained(&receiver_callback)));
273 MockOffscreenPresentationClient controller2;
274 manager()->RegisterOffscreenPresentationController(kPresentationId2, 2,
275 &controller2);
276 MockReceiverConnectionAvailableCallback receiver_callback2;
277 EXPECT_CALL(receiver_callback2,
278 OnReceiverConnectionAvailable(_, &controller2));
279 manager()->RegisterOffscreenPresentationReceiver(
280 kPresentationId2, base::Bind(&MockReceiverConnectionAvailableCallback::
281 OnReceiverConnectionAvailable,
282 base::Unretained(&receiver_callback2)));
283
284 verifyPresentationsSize(2);
285
286 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId2);
287 verifyPresentationsSize(1);
288 }
289
290 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698