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

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

Issue 2379703002: [Presentation API] (alternative) 1-UA: send message between controller and receiver page (Closed)
Patch Set: rebase with master 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 const char kPresentationUrl[] = "presentationUrl";
21 } // namespace
22
23 class MockReceiverConnectionAvailableCallback {
24 public:
25 void OnReceiverConnectionAvailable(
26 const content::PresentationSessionInfo& session_info,
27 content::PresentationConnectionPtr&& receiver_callback) {
28 OnReceiverConnectionAvailableRaw(session_info, receiver_callback.get());
29 }
30
31 MOCK_METHOD2(OnReceiverConnectionAvailableRaw,
32 void(const content::PresentationSessionInfo&,
33 blink::mojom::PresentationConnection*));
34 };
35
36 class OffscreenPresentationManagerTest : public ::testing::Test {
37 public:
38 OffscreenPresentationManager* manager() { return &manager_; }
39
40 void VerifyPresentationsSize(size_t expected) {
41 EXPECT_EQ(expected, manager_.offscreen_presentations_.size());
42 }
43
44 void VerifyControllerSize(size_t expected,
45 const std::string& presentationId) {
46 EXPECT_TRUE(
47 base::ContainsKey(manager_.offscreen_presentations_, presentationId));
48 EXPECT_EQ(expected, manager_.offscreen_presentations_[presentationId]
49 ->pending_controllers_.size());
50 }
51
52 void RegisterController(const std::string& presentation_id,
53 content::PresentationConnectionPtr controller) {
54 manager()->RegisterOffscreenPresentationController(
55 presentation_id, kPresentationUrl, RenderFrameHostId(1, 1),
56 std::move(controller));
57 }
58
59 void RegisterController(const RenderFrameHostId& render_frame_id,
60 content::PresentationConnectionPtr controller) {
61 manager()->RegisterOffscreenPresentationController(
62 kPresentationId, kPresentationUrl, render_frame_id,
63 std::move(controller));
64 }
65
66 void RegisterController(content::PresentationConnectionPtr controller) {
67 manager()->RegisterOffscreenPresentationController(
68 kPresentationId, kPresentationUrl, RenderFrameHostId(1, 1),
69 std::move(controller));
70 }
71
72 void RegisterReceiver(
73 MockReceiverConnectionAvailableCallback& receiver_callback) {
74 RegisterReceiver(kPresentationId, receiver_callback);
75 }
76
77 void RegisterReceiver(
78 const std::string& presentation_id,
79 MockReceiverConnectionAvailableCallback& receiver_callback) {
80 manager()->RegisterOffscreenPresentationReceiver(
81 presentation_id, kPresentationUrl,
82 base::Bind(&MockReceiverConnectionAvailableCallback::
83 OnReceiverConnectionAvailable,
84 base::Unretained(&receiver_callback)));
85 }
86
87 void UnregisterController(const RenderFrameHostId& render_frame_id) {
88 manager()->UnregisterOffscreenPresentationController(kPresentationId,
89 render_frame_id);
90 }
91
92 void UnregisterController() {
93 manager()->UnregisterOffscreenPresentationController(
94 kPresentationId, RenderFrameHostId(1, 1));
95 }
96
97 void UnregisterReceiver() {
98 manager()->UnregisterOffscreenPresentationReceiver(kPresentationId);
99 }
100
101 private:
102 OffscreenPresentationManager manager_;
103 };
104
105 TEST_F(OffscreenPresentationManagerTest, RegisterUnregisterController) {
106 content::PresentationConnectionPtr controller;
107 RegisterController(std::move(controller));
108 VerifyPresentationsSize(1);
109 UnregisterController();
110 VerifyPresentationsSize(0);
111 }
112
113 TEST_F(OffscreenPresentationManagerTest, RegisterUnregisterReceiver) {
114 MockReceiverConnectionAvailableCallback receiver_callback;
115 RegisterReceiver(receiver_callback);
116 VerifyPresentationsSize(1);
117 UnregisterReceiver();
118 VerifyPresentationsSize(0);
119 }
120
121 TEST_F(OffscreenPresentationManagerTest, UnregisterNonexistentController) {
122 UnregisterController();
123 VerifyPresentationsSize(0);
124 }
125
126 TEST_F(OffscreenPresentationManagerTest, UnregisterNonexistentReceiver) {
127 UnregisterReceiver();
128 VerifyPresentationsSize(0);
129 }
130
131 TEST_F(OffscreenPresentationManagerTest,
132 RegisterMultipleControllersSamePresentation) {
133 content::PresentationConnectionPtr controller1;
134 RegisterController(RenderFrameHostId(1, 1), std::move(controller1));
135 content::PresentationConnectionPtr controller2;
136 RegisterController(RenderFrameHostId(1, 2), std::move(controller2));
137 VerifyPresentationsSize(1);
138 }
139
140 TEST_F(OffscreenPresentationManagerTest,
141 RegisterMultipleControllersDifferentPresentations) {
142 content::PresentationConnectionPtr controller1;
143 RegisterController(kPresentationId, std::move(controller1));
144 content::PresentationConnectionPtr controller2;
145 RegisterController(kPresentationId2, std::move(controller2));
146 VerifyPresentationsSize(2);
147 }
148
149 TEST_F(OffscreenPresentationManagerTest,
150 RegisterControllerThenReceiverInvokesCallback) {
151 content::PresentationConnectionPtr controller;
152 MockReceiverConnectionAvailableCallback receiver_callback;
153
154 VerifyPresentationsSize(0);
155
156 RegisterController(std::move(controller));
157 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _));
158 RegisterReceiver(receiver_callback);
159 }
160
161 TEST_F(OffscreenPresentationManagerTest,
162 UnregisterReceiverFromConnectedPresentation) {
163 content::PresentationConnectionPtr controller;
164 MockReceiverConnectionAvailableCallback receiver_callback;
165
166 VerifyPresentationsSize(0);
167
168 RegisterController(std::move(controller));
169 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _));
170 RegisterReceiver(receiver_callback);
171 UnregisterReceiver();
172
173 VerifyPresentationsSize(0);
174 }
175
176 TEST_F(OffscreenPresentationManagerTest,
177 UnregisterControllerFromConnectedPresentation) {
178 content::PresentationConnectionPtr controller;
179 MockReceiverConnectionAvailableCallback receiver_callback;
180
181 VerifyPresentationsSize(0);
182
183 RegisterController(std::move(controller));
184 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _));
185 RegisterReceiver(receiver_callback);
186 UnregisterController();
187
188 VerifyPresentationsSize(1);
189 }
190
191 TEST_F(OffscreenPresentationManagerTest,
192 UnregisterReceiverThenControllerFromConnectedPresentation) {
193 content::PresentationConnectionPtr controller;
194 MockReceiverConnectionAvailableCallback receiver_callback;
195
196 VerifyPresentationsSize(0);
197
198 RegisterController(std::move(controller));
199 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _));
200 RegisterReceiver(receiver_callback);
201 UnregisterReceiver();
202 UnregisterController();
203
204 VerifyPresentationsSize(0);
205 }
206
207 TEST_F(OffscreenPresentationManagerTest,
208 UnregisterControllerThenReceiverFromConnectedPresentation) {
209 content::PresentationConnectionPtr controller;
210 MockReceiverConnectionAvailableCallback receiver_callback;
211
212 VerifyPresentationsSize(0);
213
214 RegisterController(std::move(controller));
215 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _));
216 RegisterReceiver(receiver_callback);
217 UnregisterController();
218 UnregisterReceiver();
219
220 VerifyPresentationsSize(0);
221 }
222
223 TEST_F(OffscreenPresentationManagerTest,
224 RegisterTwoControllersThenReceiverInvokesCallbackTwice) {
225 content::PresentationConnectionPtr controller1;
226 RegisterController(RenderFrameHostId(1, 1), std::move(controller1));
227 content::PresentationConnectionPtr controller2;
228 RegisterController(RenderFrameHostId(1, 2), std::move(controller2));
229
230 MockReceiverConnectionAvailableCallback receiver_callback;
231 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _))
232 .Times(2);
233 RegisterReceiver(receiver_callback);
234 }
235
236 TEST_F(OffscreenPresentationManagerTest,
237 RegisterControllerReceiverConontrollerInvokesCallbackTwice) {
238 content::PresentationConnectionPtr controller1;
239 RegisterController(RenderFrameHostId(1, 1), std::move(controller1));
240
241 MockReceiverConnectionAvailableCallback receiver_callback;
242 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _))
243 .Times(2);
244 RegisterReceiver(receiver_callback);
245
246 content::PresentationConnectionPtr controller2;
247 RegisterController(RenderFrameHostId(1, 2), std::move(controller2));
248 }
249
250 TEST_F(OffscreenPresentationManagerTest,
251 UnregisterFirstControllerFromeConnectedPresentation) {
252 content::PresentationConnectionPtr controller1;
253 RegisterController(RenderFrameHostId(1, 1), std::move(controller1));
254 content::PresentationConnectionPtr controller2;
255 RegisterController(RenderFrameHostId(1, 2), std::move(controller2));
256
257 MockReceiverConnectionAvailableCallback receiver_callback;
258 EXPECT_CALL(receiver_callback, OnReceiverConnectionAvailableRaw(_, _))
259 .Times(2);
260 RegisterReceiver(receiver_callback);
261 UnregisterController(RenderFrameHostId(1, 1));
262 UnregisterController(RenderFrameHostId(1, 1));
263
264 VerifyPresentationsSize(1);
265 }
266
267 TEST_F(OffscreenPresentationManagerTest, TwoPresentations) {
268 content::PresentationConnectionPtr controller1;
269 RegisterController(kPresentationId, std::move(controller1));
270
271 MockReceiverConnectionAvailableCallback receiver_callback1;
272 EXPECT_CALL(receiver_callback1, OnReceiverConnectionAvailableRaw(_, _))
273 .Times(1);
274 RegisterReceiver(kPresentationId, receiver_callback1);
275
276 content::PresentationConnectionPtr controller2;
277 RegisterController(kPresentationId2, std::move(controller2));
278
279 MockReceiverConnectionAvailableCallback receiver_callback2;
280 EXPECT_CALL(receiver_callback2, OnReceiverConnectionAvailableRaw(_, _))
281 .Times(1);
282 RegisterReceiver(kPresentationId2, receiver_callback2);
283
284 VerifyPresentationsSize(2);
285
286 UnregisterReceiver();
287 VerifyPresentationsSize(1);
288 }
289
290 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698