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

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: Created 4 years, 3 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(OnReceiverConnectionAvailable,
26 void(const content::PresentationSessionInfo&));
27 MOCK_METHOD1(AddOffscreenPresentationObserver,
28 void(OffscreenPresentationClient*));
29 MOCK_METHOD1(RemoveOffscreenPresentationObserver,
30 void(OffscreenPresentationClient*));
31 };
32
33 class OffscreenPresentationManagerTest : public ::testing::Test {
34 public:
35 OffscreenPresentationManager* manager() { return &manager_; }
36
37 void verifyPresentationsSize(size_t expected);
38 void verifyControllerSize(size_t expected,
39 const OffscreenPresentation* presentation);
40
41 private:
42 OffscreenPresentationManager manager_;
43 };
44
45 void OffscreenPresentationManagerTest::verifyPresentationsSize(
imcheng 2016/09/19 23:01:17 These don't need to be their own functions since t
zhaobin 2016/09/23 17:18:18 Create these functions to access private variable
46 size_t expected) {
47 EXPECT_EQ(expected, manager_.offscreen_presentations_.size());
48 }
49
50 void OffscreenPresentationManagerTest::verifyControllerSize(
51 size_t expected,
52 const OffscreenPresentation* presentation) {
53 EXPECT_EQ(expected, presentation->controllers_.size());
54 }
55
56 TEST_F(OffscreenPresentationManagerTest,
57 RegisterControllerCreateNewPresentation) {
58 MockOffscreenPresentationClient controller;
59 manager()->RegisterOffscreenPresentationController(kPresentationId,
60 &controller);
61 verifyPresentationsSize(1);
62 }
63
64 TEST_F(OffscreenPresentationManagerTest, RegisterOneReceiverDoNothing) {
65 MockOffscreenPresentationClient receiver;
66 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
67 verifyPresentationsSize(0);
68 }
69
70 TEST_F(OffscreenPresentationManagerTest, UnregisterControllerNoCrash) {
71 MockOffscreenPresentationClient controller;
72 manager()->UnregisterOffscreenPresentationController(kPresentationId,
73 &controller);
74 verifyPresentationsSize(0);
75 }
76
77 TEST_F(OffscreenPresentationManagerTest, UnregisterReceiverNoCrash) {
78 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
79 verifyPresentationsSize(0);
80 }
81
82 TEST_F(OffscreenPresentationManagerTest,
83 RegisterControllerCreatePresentationWithTwoControllers) {
84 MockOffscreenPresentationClient controller1;
85 manager()->RegisterOffscreenPresentationController(kPresentationId,
86 &controller1);
87 MockOffscreenPresentationClient controller2;
88 manager()->RegisterOffscreenPresentationController(kPresentationId,
89 &controller2);
90 verifyPresentationsSize(1);
91 }
92
93 TEST_F(OffscreenPresentationManagerTest,
94 RegisterControllerCreateTwoPresentations) {
95 MockOffscreenPresentationClient controller1;
96 manager()->RegisterOffscreenPresentationController(kPresentationId,
97 &controller1);
98 MockOffscreenPresentationClient controller2;
99 manager()->RegisterOffscreenPresentationController(kPresentationId2,
100 &controller2);
101 verifyPresentationsSize(2);
102 }
103
104 TEST_F(OffscreenPresentationManagerTest,
105 RegisterControllerAndReceiverFireOnConnectionAvailable) {
106 MockOffscreenPresentationClient controller;
107 MockOffscreenPresentationClient receiver;
108 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
109 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
110 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_));
111
112 manager()->RegisterOffscreenPresentationController(kPresentationId,
113 &controller);
114 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
115 }
116
117 TEST_F(OffscreenPresentationManagerTest, RegisterUnregisterController) {
118 MockOffscreenPresentationClient controller;
119 manager()->RegisterOffscreenPresentationController(kPresentationId,
120 &controller);
121 manager()->UnregisterOffscreenPresentationController(kPresentationId,
122 &controller);
123 verifyPresentationsSize(0);
124 }
125
126 TEST_F(OffscreenPresentationManagerTest, UnregisterReceiverOnly) {
127 MockOffscreenPresentationClient controller;
128 MockOffscreenPresentationClient receiver;
129 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
130 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
131 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_));
132
133 manager()->RegisterOffscreenPresentationController(kPresentationId,
134 &controller);
135 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
136
137 EXPECT_CALL(controller, RemoveOffscreenPresentationObserver(&receiver));
138 EXPECT_CALL(receiver, RemoveOffscreenPresentationObserver(&controller));
139 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
140
141 verifyPresentationsSize(0);
142 }
143
144 TEST_F(OffscreenPresentationManagerTest, UnregisterControllerOnly) {
145 MockOffscreenPresentationClient controller;
146 MockOffscreenPresentationClient receiver;
147 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
148 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
149 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_));
150
151 manager()->RegisterOffscreenPresentationController(kPresentationId,
152 &controller);
153 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
154
155 EXPECT_CALL(controller, RemoveOffscreenPresentationObserver(&receiver));
156 EXPECT_CALL(receiver, RemoveOffscreenPresentationObserver(&controller));
157 manager()->UnregisterOffscreenPresentationController(kPresentationId,
158 &controller);
159 verifyPresentationsSize(0);
160 }
161
162 TEST_F(OffscreenPresentationManagerTest, UnregisterControllerReceiver) {
163 MockOffscreenPresentationClient controller;
164 MockOffscreenPresentationClient receiver;
165 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
166 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
167 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_));
168
169 manager()->RegisterOffscreenPresentationController(kPresentationId,
170 &controller);
171 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
172
173 EXPECT_CALL(controller, RemoveOffscreenPresentationObserver(&receiver))
174 .Times(1);
175 EXPECT_CALL(receiver, RemoveOffscreenPresentationObserver(&controller))
176 .Times(1);
177 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
178 manager()->UnregisterOffscreenPresentationController(kPresentationId,
179 &controller);
180
181 verifyPresentationsSize(0);
182 }
183
184 TEST_F(OffscreenPresentationManagerTest, UnregisterReceiverController) {
185 MockOffscreenPresentationClient controller;
186 MockOffscreenPresentationClient receiver;
187 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
188 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
189 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_));
190
191 manager()->RegisterOffscreenPresentationController(kPresentationId,
192 &controller);
193 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
194
195 EXPECT_CALL(controller, RemoveOffscreenPresentationObserver(&receiver))
196 .Times(1);
197 EXPECT_CALL(receiver, RemoveOffscreenPresentationObserver(&controller))
198 .Times(1);
199 manager()->UnregisterOffscreenPresentationController(kPresentationId,
200 &controller);
201 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
202
203 verifyPresentationsSize(0);
204 }
205
206 TEST_F(OffscreenPresentationManagerTest,
207 RegisterTwoControllersThenReceiverFireOnConnectionAvailableTwice) {
208 MockOffscreenPresentationClient controller;
209 manager()->RegisterOffscreenPresentationController(kPresentationId,
210 &controller);
211 MockOffscreenPresentationClient controller2;
212 manager()->RegisterOffscreenPresentationController(kPresentationId,
213 &controller2);
214
215 MockOffscreenPresentationClient receiver;
216 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
217 EXPECT_CALL(controller2, AddOffscreenPresentationObserver(&receiver));
218 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
219 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller2));
220 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_)).Times(2);
221
222 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
223 }
224
225 TEST_F(
226 OffscreenPresentationManagerTest,
227 RegisterControllerThenReceiverThenConontrollerFireOnConnectionAvailableTwice ) {
228 MockOffscreenPresentationClient controller;
229 manager()->RegisterOffscreenPresentationController(kPresentationId,
230 &controller);
231 MockOffscreenPresentationClient receiver;
232 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
233 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
234 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_)).Times(2);
235 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
236 MockOffscreenPresentationClient controller2;
237 EXPECT_CALL(controller2, AddOffscreenPresentationObserver(&receiver));
238 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller2));
239 manager()->RegisterOffscreenPresentationController(kPresentationId,
240 &controller2);
241 }
242
243 TEST_F(OffscreenPresentationManagerTest,
244 OnePresentationUnregisterFirstController) {
245 MockOffscreenPresentationClient controller;
246 manager()->RegisterOffscreenPresentationController(kPresentationId,
247 &controller);
248 MockOffscreenPresentationClient controller2;
249 manager()->RegisterOffscreenPresentationController(kPresentationId,
250 &controller2);
251 MockOffscreenPresentationClient receiver;
252 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver));
253 EXPECT_CALL(controller2, AddOffscreenPresentationObserver(&receiver));
254 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller));
255 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller2));
256 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_)).Times(2);
257
258 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
259
260 EXPECT_CALL(controller, RemoveOffscreenPresentationObserver(&receiver));
261 EXPECT_CALL(controller2, RemoveOffscreenPresentationObserver(&receiver));
262 EXPECT_CALL(receiver, RemoveOffscreenPresentationObserver(_)).Times(2);
263
264 manager()->UnregisterOffscreenPresentationController(kPresentationId,
265 &controller);
266 manager()->UnregisterOffscreenPresentationController(kPresentationId,
267 &controller2);
268
269 verifyPresentationsSize(0);
270 }
271
272 TEST_F(OffscreenPresentationManagerTest, TwoPresentations) {
273 MockOffscreenPresentationClient controller;
274 manager()->RegisterOffscreenPresentationController(kPresentationId,
275 &controller);
276 MockOffscreenPresentationClient receiver;
277 EXPECT_CALL(controller, AddOffscreenPresentationObserver(&receiver)).Times(1);
278 EXPECT_CALL(receiver, AddOffscreenPresentationObserver(&controller)).Times(1);
279 EXPECT_CALL(receiver, OnReceiverConnectionAvailable(_)).Times(1);
280
281 manager()->RegisterOffscreenPresentationReceiver(kPresentationId, &receiver);
282
283 MockOffscreenPresentationClient controller2;
284 manager()->RegisterOffscreenPresentationController(kPresentationId2,
285 &controller2);
286 MockOffscreenPresentationClient receiver2;
287 EXPECT_CALL(controller2, AddOffscreenPresentationObserver(&receiver2))
288 .Times(1);
289 EXPECT_CALL(receiver2, AddOffscreenPresentationObserver(&controller2))
290 .Times(1);
291 EXPECT_CALL(receiver2, OnReceiverConnectionAvailable(_)).Times(1);
292
293 manager()->RegisterOffscreenPresentationReceiver(kPresentationId2,
294 &receiver2);
295
296 verifyPresentationsSize(2);
297
298 EXPECT_CALL(receiver2, RemoveOffscreenPresentationObserver(&controller2))
299 .Times(1);
300 EXPECT_CALL(controller2, RemoveOffscreenPresentationObserver(&receiver2))
301 .Times(1);
302 manager()->UnregisterOffscreenPresentationController(kPresentationId2,
303 &controller2);
304
305 verifyPresentationsSize(1);
306 }
307
308 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698