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

Side by Side Diff: content/browser/presentation/presentation_service_impl.cc

Issue 2737413003: [Presentation API] Remove references to presentation sessions. (Closed)
Patch Set: Update PresentationServiceDelegateImpl unittest Created 3 years, 9 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/browser/presentation/presentation_service_impl.h" 5 #include "content/browser/presentation/presentation_service_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/stl_util.h" 13 #include "base/stl_util.h"
14 #include "content/public/browser/content_browser_client.h" 14 #include "content/public/browser/content_browser_client.h"
15 #include "content/public/browser/navigation_handle.h" 15 #include "content/public/browser/navigation_handle.h"
16 #include "content/public/browser/render_frame_host.h" 16 #include "content/public/browser/render_frame_host.h"
17 #include "content/public/browser/render_process_host.h" 17 #include "content/public/browser/render_process_host.h"
18 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
19 #include "content/public/common/content_client.h" 19 #include "content/public/common/content_client.h"
20 #include "content/public/common/frame_navigate_params.h" 20 #include "content/public/common/frame_navigate_params.h"
21 #include "content/public/common/presentation_connection_message.h" 21 #include "content/public/common/presentation_connection_message.h"
22 22
23 namespace content { 23 namespace content {
24 24
25 namespace { 25 namespace {
26 26
27 const int kInvalidRequestSessionId = -1; 27 const int kInvalidRequestId = -1;
28 28
29 int GetNextRequestSessionId() { 29 int GetNextRequestId() {
30 static int next_request_session_id = 0; 30 static int next_request_id = 0;
31 return ++next_request_session_id; 31 return ++next_request_id;
32 } 32 }
33 33
34 void InvokeNewSessionCallbackWithError( 34 void InvokeNewPresentationCallbackWithError(
35 const PresentationServiceImpl::NewSessionCallback& callback) { 35 const PresentationServiceImpl::NewPresentationCallback& callback) {
36 callback.Run(base::nullopt, 36 callback.Run(base::nullopt,
37 PresentationError( 37 PresentationError(
38 PRESENTATION_ERROR_PREVIOUS_START_IN_PROGRESS, 38 PRESENTATION_ERROR_PREVIOUS_START_IN_PROGRESS,
39 "There is already an unsettled Promise from a previous call " 39 "There is already an unsettled Promise from a previous call "
40 "to start.")); 40 "to start."));
41 } 41 }
42 42
43 } // namespace 43 } // namespace
44 44
45 PresentationServiceImpl::PresentationServiceImpl( 45 PresentationServiceImpl::PresentationServiceImpl(
46 RenderFrameHost* render_frame_host, 46 RenderFrameHost* render_frame_host,
47 WebContents* web_contents, 47 WebContents* web_contents,
48 ControllerPresentationServiceDelegate* controller_delegate, 48 ControllerPresentationServiceDelegate* controller_delegate,
49 ReceiverPresentationServiceDelegate* receiver_delegate) 49 ReceiverPresentationServiceDelegate* receiver_delegate)
50 : WebContentsObserver(web_contents), 50 : WebContentsObserver(web_contents),
51 controller_delegate_(controller_delegate), 51 controller_delegate_(controller_delegate),
52 receiver_delegate_(receiver_delegate), 52 receiver_delegate_(receiver_delegate),
53 start_session_request_id_(kInvalidRequestSessionId), 53 start_presentation_request_id_(kInvalidRequestId),
54 weak_factory_(this) { 54 weak_factory_(this) {
55 DCHECK(render_frame_host); 55 DCHECK(render_frame_host);
56 DCHECK(web_contents); 56 DCHECK(web_contents);
57 CHECK(render_frame_host->IsRenderFrameLive()); 57 CHECK(render_frame_host->IsRenderFrameLive());
58 58
59 render_process_id_ = render_frame_host->GetProcess()->GetID(); 59 render_process_id_ = render_frame_host->GetProcess()->GetID();
60 render_frame_id_ = render_frame_host->GetRoutingID(); 60 render_frame_id_ = render_frame_host->GetRoutingID();
61 DVLOG(2) << "PresentationServiceImpl: " 61 DVLOG(2) << "PresentationServiceImpl: "
62 << render_process_id_ << ", " << render_frame_id_; 62 << render_process_id_ << ", " << render_frame_id_;
63 63
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 auto listener_it = screen_availability_listeners_.find(url); 148 auto listener_it = screen_availability_listeners_.find(url);
149 if (listener_it == screen_availability_listeners_.end()) 149 if (listener_it == screen_availability_listeners_.end())
150 return; 150 return;
151 151
152 controller_delegate_->RemoveScreenAvailabilityListener( 152 controller_delegate_->RemoveScreenAvailabilityListener(
153 render_process_id_, render_frame_id_, listener_it->second.get()); 153 render_process_id_, render_frame_id_, listener_it->second.get());
154 screen_availability_listeners_.erase(listener_it); 154 screen_availability_listeners_.erase(listener_it);
155 } 155 }
156 156
157 void PresentationServiceImpl::StartSession( 157 void PresentationServiceImpl::StartPresentation(
158 const std::vector<GURL>& presentation_urls, 158 const std::vector<GURL>& presentation_urls,
159 const NewSessionCallback& callback) { 159 const NewPresentationCallback& callback) {
160 DVLOG(2) << "StartSession"; 160 DVLOG(2) << "StartPresentation";
161 if (!controller_delegate_) { 161 if (!controller_delegate_) {
162 callback.Run(base::nullopt, 162 callback.Run(base::nullopt,
163 PresentationError(PRESENTATION_ERROR_NO_AVAILABLE_SCREENS, 163 PresentationError(PRESENTATION_ERROR_NO_AVAILABLE_SCREENS,
164 "No screens found.")); 164 "No screens found."));
165 return; 165 return;
166 } 166 }
167 167
168 // There is a StartSession request in progress. To avoid queueing up 168 // There is a StartPresentation request in progress. To avoid queueing up
169 // requests, the incoming request is rejected. 169 // requests, the incoming request is rejected.
170 if (start_session_request_id_ != kInvalidRequestSessionId) { 170 if (start_presentation_request_id_ != kInvalidRequestId) {
171 InvokeNewSessionCallbackWithError(callback); 171 InvokeNewPresentationCallbackWithError(callback);
172 return; 172 return;
173 } 173 }
174 174
175 start_session_request_id_ = GetNextRequestSessionId(); 175 start_presentation_request_id_ = GetNextRequestId();
176 pending_start_session_cb_.reset(new NewSessionCallbackWrapper(callback)); 176 pending_start_presentation_cb_.reset(
177 controller_delegate_->StartSession( 177 new NewPresentationCallbackWrapper(callback));
178 controller_delegate_->StartPresentation(
178 render_process_id_, render_frame_id_, presentation_urls, 179 render_process_id_, render_frame_id_, presentation_urls,
179 base::Bind(&PresentationServiceImpl::OnStartSessionSucceeded, 180 base::Bind(&PresentationServiceImpl::OnStartPresentationSucceeded,
180 weak_factory_.GetWeakPtr(), start_session_request_id_), 181 weak_factory_.GetWeakPtr(), start_presentation_request_id_),
181 base::Bind(&PresentationServiceImpl::OnStartSessionError, 182 base::Bind(&PresentationServiceImpl::OnStartPresentationError,
182 weak_factory_.GetWeakPtr(), start_session_request_id_)); 183 weak_factory_.GetWeakPtr(), start_presentation_request_id_));
183 } 184 }
184 185
185 void PresentationServiceImpl::JoinSession( 186 void PresentationServiceImpl::ReconnectPresentation(
186 const std::vector<GURL>& presentation_urls, 187 const std::vector<GURL>& presentation_urls,
187 const base::Optional<std::string>& presentation_id, 188 const base::Optional<std::string>& presentation_id,
188 const NewSessionCallback& callback) { 189 const NewPresentationCallback& callback) {
189 DVLOG(2) << "JoinSession"; 190 DVLOG(2) << "ReconnectPresentation";
190 if (!controller_delegate_) { 191 if (!controller_delegate_) {
191 callback.Run(base::nullopt, 192 callback.Run(base::nullopt,
192 PresentationError(PRESENTATION_ERROR_NO_PRESENTATION_FOUND, 193 PresentationError(PRESENTATION_ERROR_NO_PRESENTATION_FOUND,
193 "Error joining route: No matching route")); 194 "Error joining route: No matching route"));
194 return; 195 return;
195 } 196 }
196 197
197 int request_session_id = RegisterJoinSessionCallback(callback); 198 int request_id = RegisterReconnectPresentationCallback(callback);
198 if (request_session_id == kInvalidRequestSessionId) { 199 if (request_id == kInvalidRequestId) {
199 InvokeNewSessionCallbackWithError(callback); 200 InvokeNewPresentationCallbackWithError(callback);
200 return; 201 return;
201 } 202 }
202 controller_delegate_->JoinSession( 203 controller_delegate_->ReconnectPresentation(
203 render_process_id_, render_frame_id_, presentation_urls, 204 render_process_id_, render_frame_id_, presentation_urls,
204 presentation_id.value_or(std::string()), 205 presentation_id.value_or(std::string()),
205 base::Bind(&PresentationServiceImpl::OnJoinSessionSucceeded, 206 base::Bind(&PresentationServiceImpl::OnReconnectPresentationSucceeded,
206 weak_factory_.GetWeakPtr(), request_session_id), 207 weak_factory_.GetWeakPtr(), request_id),
207 base::Bind(&PresentationServiceImpl::OnJoinSessionError, 208 base::Bind(&PresentationServiceImpl::OnReconnectPresentationError,
208 weak_factory_.GetWeakPtr(), request_session_id)); 209 weak_factory_.GetWeakPtr(), request_id));
209 } 210 }
210 211
211 int PresentationServiceImpl::RegisterJoinSessionCallback( 212 int PresentationServiceImpl::RegisterReconnectPresentationCallback(
212 const NewSessionCallback& callback) { 213 const NewPresentationCallback& callback) {
213 if (pending_join_session_cbs_.size() >= kMaxNumQueuedSessionRequests) 214 if (pending_reconnect_presentation_cbs_.size() >= kMaxQueuedRequests)
214 return kInvalidRequestSessionId; 215 return kInvalidRequestId;
215 216
216 int request_id = GetNextRequestSessionId(); 217 int request_id = GetNextRequestId();
217 pending_join_session_cbs_[request_id].reset( 218 pending_reconnect_presentation_cbs_[request_id].reset(
218 new NewSessionCallbackWrapper(callback)); 219 new NewPresentationCallbackWrapper(callback));
219 return request_id; 220 return request_id;
220 } 221 }
221 222
222 void PresentationServiceImpl::ListenForConnectionStateChange( 223 void PresentationServiceImpl::ListenForConnectionStateChange(
223 const PresentationSessionInfo& connection) { 224 const PresentationInfo& connection) {
224 // NOTE: Blink will automatically transition the connection's state to 225 // NOTE: Blink will automatically transition the connection's state to
225 // 'connected'. 226 // 'connected'.
226 if (controller_delegate_) { 227 if (controller_delegate_) {
227 controller_delegate_->ListenForConnectionStateChange( 228 controller_delegate_->ListenForConnectionStateChange(
228 render_process_id_, render_frame_id_, connection, 229 render_process_id_, render_frame_id_, connection,
229 base::Bind(&PresentationServiceImpl::OnConnectionStateChanged, 230 base::Bind(&PresentationServiceImpl::OnConnectionStateChanged,
230 weak_factory_.GetWeakPtr(), connection)); 231 weak_factory_.GetWeakPtr(), connection));
231 } 232 }
232 } 233 }
233 234
234 void PresentationServiceImpl::OnStartSessionSucceeded( 235 void PresentationServiceImpl::OnStartPresentationSucceeded(
235 int request_session_id, 236 int request_id,
236 const PresentationSessionInfo& session_info) { 237 const PresentationInfo& presentation_info) {
237 if (request_session_id != start_session_request_id_) 238 if (request_id != start_presentation_request_id_)
238 return; 239 return;
239 240
240 CHECK(pending_start_session_cb_.get()); 241 CHECK(pending_start_presentation_cb_.get());
241 pending_start_session_cb_->Run(session_info, base::nullopt); 242 pending_start_presentation_cb_->Run(presentation_info, base::nullopt);
242 ListenForConnectionStateChange(session_info); 243 ListenForConnectionStateChange(presentation_info);
243 pending_start_session_cb_.reset(); 244 pending_start_presentation_cb_.reset();
244 start_session_request_id_ = kInvalidRequestSessionId; 245 start_presentation_request_id_ = kInvalidRequestId;
245 } 246 }
246 247
247 void PresentationServiceImpl::OnStartSessionError( 248 void PresentationServiceImpl::OnStartPresentationError(
248 int request_session_id, 249 int request_id,
249 const PresentationError& error) { 250 const PresentationError& error) {
250 if (request_session_id != start_session_request_id_) 251 if (request_id != start_presentation_request_id_)
251 return; 252 return;
252 253
253 CHECK(pending_start_session_cb_.get()); 254 CHECK(pending_start_presentation_cb_.get());
254 pending_start_session_cb_->Run(base::nullopt, error); 255 pending_start_presentation_cb_->Run(base::nullopt, error);
255 pending_start_session_cb_.reset(); 256 pending_start_presentation_cb_.reset();
256 start_session_request_id_ = kInvalidRequestSessionId; 257 start_presentation_request_id_ = kInvalidRequestId;
257 } 258 }
258 259
259 void PresentationServiceImpl::OnJoinSessionSucceeded( 260 void PresentationServiceImpl::OnReconnectPresentationSucceeded(
260 int request_session_id, 261 int request_id,
261 const PresentationSessionInfo& session_info) { 262 const PresentationInfo& presentation_info) {
262 if (RunAndEraseJoinSessionMojoCallback(request_session_id, session_info, 263 if (RunAndEraseReconnectPresentationMojoCallback(
263 base::nullopt)) { 264 request_id, presentation_info, base::nullopt)) {
264 ListenForConnectionStateChange(session_info); 265 ListenForConnectionStateChange(presentation_info);
265 } 266 }
266 } 267 }
267 268
268 void PresentationServiceImpl::OnJoinSessionError( 269 void PresentationServiceImpl::OnReconnectPresentationError(
269 int request_session_id, 270 int request_id,
270 const PresentationError& error) { 271 const PresentationError& error) {
271 RunAndEraseJoinSessionMojoCallback(request_session_id, base::nullopt, error); 272 RunAndEraseReconnectPresentationMojoCallback(request_id, base::nullopt,
273 error);
272 } 274 }
273 275
274 bool PresentationServiceImpl::RunAndEraseJoinSessionMojoCallback( 276 bool PresentationServiceImpl::RunAndEraseReconnectPresentationMojoCallback(
275 int request_session_id, 277 int request_id,
276 const base::Optional<PresentationSessionInfo>& session_info, 278 const base::Optional<PresentationInfo>& presentation_info,
277 const base::Optional<PresentationError>& error) { 279 const base::Optional<PresentationError>& error) {
278 auto it = pending_join_session_cbs_.find(request_session_id); 280 auto it = pending_reconnect_presentation_cbs_.find(request_id);
279 if (it == pending_join_session_cbs_.end()) 281 if (it == pending_reconnect_presentation_cbs_.end())
280 return false; 282 return false;
281 283
282 DCHECK(it->second.get()); 284 DCHECK(it->second.get());
283 it->second->Run(session_info, error); 285 it->second->Run(presentation_info, error);
284 pending_join_session_cbs_.erase(it); 286 pending_reconnect_presentation_cbs_.erase(it);
285 return true; 287 return true;
286 } 288 }
287 289
288 void PresentationServiceImpl::SetDefaultPresentationUrls( 290 void PresentationServiceImpl::SetDefaultPresentationUrls(
289 const std::vector<GURL>& presentation_urls) { 291 const std::vector<GURL>& presentation_urls) {
290 DVLOG(2) << "SetDefaultPresentationUrls"; 292 DVLOG(2) << "SetDefaultPresentationUrls";
291 if (!controller_delegate_) 293 if (!controller_delegate_)
292 return; 294 return;
293 295
294 if (default_presentation_urls_ == presentation_urls) 296 if (default_presentation_urls_ == presentation_urls)
(...skipping 17 matching lines...) Expand all
312 314
313 void PresentationServiceImpl::Terminate(const GURL& presentation_url, 315 void PresentationServiceImpl::Terminate(const GURL& presentation_url,
314 const std::string& presentation_id) { 316 const std::string& presentation_id) {
315 DVLOG(2) << "Terminate " << presentation_id; 317 DVLOG(2) << "Terminate " << presentation_id;
316 if (controller_delegate_) 318 if (controller_delegate_)
317 controller_delegate_->Terminate(render_process_id_, render_frame_id_, 319 controller_delegate_->Terminate(render_process_id_, render_frame_id_,
318 presentation_id); 320 presentation_id);
319 } 321 }
320 322
321 void PresentationServiceImpl::OnConnectionStateChanged( 323 void PresentationServiceImpl::OnConnectionStateChanged(
322 const PresentationSessionInfo& connection, 324 const PresentationInfo& connection,
323 const PresentationConnectionStateChangeInfo& info) { 325 const PresentationConnectionStateChangeInfo& info) {
324 DVLOG(2) << "PresentationServiceImpl::OnConnectionStateChanged " 326 DVLOG(2) << "PresentationServiceImpl::OnConnectionStateChanged "
325 << "[presentation_id]: " << connection.presentation_id 327 << "[presentation_id]: " << connection.presentation_id
326 << " [state]: " << info.state; 328 << " [state]: " << info.state;
327 DCHECK(client_.get()); 329 DCHECK(client_.get());
328 if (info.state == PRESENTATION_CONNECTION_STATE_CLOSED) { 330 if (info.state == PRESENTATION_CONNECTION_STATE_CLOSED) {
329 client_->OnConnectionClosed(connection, info.close_reason, info.message); 331 client_->OnConnectionClosed(connection, info.close_reason, info.message);
330 } else { 332 } else {
331 client_->OnConnectionStateChanged(connection, info.state); 333 client_->OnConnectionStateChanged(connection, info.state);
332 } 334 }
333 } 335 }
334 336
335 bool PresentationServiceImpl::FrameMatches( 337 bool PresentationServiceImpl::FrameMatches(
336 content::RenderFrameHost* render_frame_host) const { 338 content::RenderFrameHost* render_frame_host) const {
337 if (!render_frame_host) 339 if (!render_frame_host)
338 return false; 340 return false;
339 341
340 return render_frame_host->GetProcess()->GetID() == render_process_id_ && 342 return render_frame_host->GetProcess()->GetID() == render_process_id_ &&
341 render_frame_host->GetRoutingID() == render_frame_id_; 343 render_frame_host->GetRoutingID() == render_frame_id_;
342 } 344 }
343 345
344 PresentationServiceDelegate* 346 PresentationServiceDelegate*
345 PresentationServiceImpl::GetPresentationServiceDelegate() { 347 PresentationServiceImpl::GetPresentationServiceDelegate() {
346 return receiver_delegate_ 348 return receiver_delegate_
347 ? static_cast<PresentationServiceDelegate*>(receiver_delegate_) 349 ? static_cast<PresentationServiceDelegate*>(receiver_delegate_)
348 : static_cast<PresentationServiceDelegate*>(controller_delegate_); 350 : static_cast<PresentationServiceDelegate*>(controller_delegate_);
349 } 351 }
350 352
351 void PresentationServiceImpl::ListenForConnectionMessages( 353 void PresentationServiceImpl::ListenForConnectionMessages(
352 const PresentationSessionInfo& session_info) { 354 const PresentationInfo& presentation_info) {
353 DVLOG(2) << "ListenForConnectionMessages"; 355 DVLOG(2) << "ListenForConnectionMessages";
354 if (!controller_delegate_) 356 if (!controller_delegate_)
355 return; 357 return;
356 358
357 controller_delegate_->ListenForConnectionMessages( 359 controller_delegate_->ListenForConnectionMessages(
358 render_process_id_, render_frame_id_, session_info, 360 render_process_id_, render_frame_id_, presentation_info,
359 base::Bind(&PresentationServiceImpl::OnConnectionMessages, 361 base::Bind(&PresentationServiceImpl::OnConnectionMessages,
360 weak_factory_.GetWeakPtr(), session_info)); 362 weak_factory_.GetWeakPtr(), presentation_info));
361 } 363 }
362 364
363 void PresentationServiceImpl::SetPresentationConnection( 365 void PresentationServiceImpl::SetPresentationConnection(
364 const PresentationSessionInfo& session_info, 366 const PresentationInfo& presentation_info,
365 blink::mojom::PresentationConnectionPtr controller_connection_ptr, 367 blink::mojom::PresentationConnectionPtr controller_connection_ptr,
366 blink::mojom::PresentationConnectionRequest receiver_connection_request) { 368 blink::mojom::PresentationConnectionRequest receiver_connection_request) {
367 DVLOG(2) << "SetPresentationConnection"; 369 DVLOG(2) << "SetPresentationConnection";
368 370
369 if (!controller_delegate_) 371 if (!controller_delegate_)
370 return; 372 return;
371 373
372 controller_delegate_->ConnectToPresentation( 374 controller_delegate_->ConnectToPresentation(
373 render_process_id_, render_frame_id_, session_info, 375 render_process_id_, render_frame_id_, presentation_info,
374 std::move(controller_connection_ptr), 376 std::move(controller_connection_ptr),
375 std::move(receiver_connection_request)); 377 std::move(receiver_connection_request));
376 } 378 }
377 379
378 void PresentationServiceImpl::OnConnectionMessages( 380 void PresentationServiceImpl::OnConnectionMessages(
379 const PresentationSessionInfo& session_info, 381 const PresentationInfo& presentation_info,
380 std::vector<PresentationConnectionMessage> messages) { 382 std::vector<PresentationConnectionMessage> messages) {
381 DCHECK(client_); 383 DCHECK(client_);
382 384
383 DVLOG(2) << "OnConnectionMessages [id]: " << session_info.presentation_id; 385 DVLOG(2) << "OnConnectionMessages [id]: "
384 client_->OnConnectionMessagesReceived(session_info, std::move(messages)); 386 << presentation_info.presentation_id;
387 client_->OnConnectionMessagesReceived(presentation_info, std::move(messages));
385 } 388 }
386 389
387 void PresentationServiceImpl::OnReceiverConnectionAvailable( 390 void PresentationServiceImpl::OnReceiverConnectionAvailable(
388 const content::PresentationSessionInfo& session_info, 391 const content::PresentationInfo& presentation_info,
389 PresentationConnectionPtr controller_connection_ptr, 392 PresentationConnectionPtr controller_connection_ptr,
390 PresentationConnectionRequest receiver_connection_request) { 393 PresentationConnectionRequest receiver_connection_request) {
391 DVLOG(2) << "PresentationServiceImpl::OnReceiverConnectionAvailable"; 394 DVLOG(2) << "PresentationServiceImpl::OnReceiverConnectionAvailable";
392 395
393 client_->OnReceiverConnectionAvailable( 396 client_->OnReceiverConnectionAvailable(
394 session_info, std::move(controller_connection_ptr), 397 presentation_info, std::move(controller_connection_ptr),
395 std::move(receiver_connection_request)); 398 std::move(receiver_connection_request));
396 } 399 }
397 400
398 void PresentationServiceImpl::DidFinishNavigation( 401 void PresentationServiceImpl::DidFinishNavigation(
399 NavigationHandle* navigation_handle) { 402 NavigationHandle* navigation_handle) {
400 DVLOG(2) << "PresentationServiceImpl::DidNavigateAnyFrame"; 403 DVLOG(2) << "PresentationServiceImpl::DidNavigateAnyFrame";
401 if (!navigation_handle->HasCommitted() || 404 if (!navigation_handle->HasCommitted() ||
402 !FrameMatches(navigation_handle->GetRenderFrameHost())) { 405 !FrameMatches(navigation_handle->GetRenderFrameHost())) {
403 return; 406 return;
404 } 407 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 void PresentationServiceImpl::Reset() { 444 void PresentationServiceImpl::Reset() {
442 DVLOG(2) << "PresentationServiceImpl::Reset"; 445 DVLOG(2) << "PresentationServiceImpl::Reset";
443 446
444 if (auto* delegate = GetPresentationServiceDelegate()) 447 if (auto* delegate = GetPresentationServiceDelegate())
445 delegate->Reset(render_process_id_, render_frame_id_); 448 delegate->Reset(render_process_id_, render_frame_id_);
446 449
447 default_presentation_urls_.clear(); 450 default_presentation_urls_.clear();
448 451
449 screen_availability_listeners_.clear(); 452 screen_availability_listeners_.clear();
450 453
451 start_session_request_id_ = kInvalidRequestSessionId; 454 start_presentation_request_id_ = kInvalidRequestId;
452 pending_start_session_cb_.reset(); 455 pending_start_presentation_cb_.reset();
453 456
454 pending_join_session_cbs_.clear(); 457 pending_reconnect_presentation_cbs_.clear();
455 } 458 }
456 459
457 void PresentationServiceImpl::OnDelegateDestroyed() { 460 void PresentationServiceImpl::OnDelegateDestroyed() {
458 DVLOG(2) << "PresentationServiceImpl::OnDelegateDestroyed"; 461 DVLOG(2) << "PresentationServiceImpl::OnDelegateDestroyed";
459 controller_delegate_ = nullptr; 462 controller_delegate_ = nullptr;
460 receiver_delegate_ = nullptr; 463 receiver_delegate_ = nullptr;
461 Reset(); 464 Reset();
462 } 465 }
463 466
464 void PresentationServiceImpl::OnDefaultPresentationStarted( 467 void PresentationServiceImpl::OnDefaultPresentationStarted(
465 const PresentationSessionInfo& connection) { 468 const PresentationInfo& connection) {
466 DCHECK(client_.get()); 469 DCHECK(client_.get());
467 client_->OnDefaultSessionStarted(connection); 470 client_->OnDefaultPresentationStarted(connection);
468 ListenForConnectionStateChange(connection); 471 ListenForConnectionStateChange(connection);
469 } 472 }
470 473
471 PresentationServiceImpl::ScreenAvailabilityListenerImpl:: 474 PresentationServiceImpl::ScreenAvailabilityListenerImpl::
472 ScreenAvailabilityListenerImpl(const GURL& availability_url, 475 ScreenAvailabilityListenerImpl(const GURL& availability_url,
473 PresentationServiceImpl* service) 476 PresentationServiceImpl* service)
474 : availability_url_(availability_url), service_(service) { 477 : availability_url_(availability_url), service_(service) {
475 DCHECK(service_); 478 DCHECK(service_);
476 DCHECK(service_->client_.get()); 479 DCHECK(service_->client_.get());
477 } 480 }
(...skipping 10 matching lines...) Expand all
488 void PresentationServiceImpl::ScreenAvailabilityListenerImpl 491 void PresentationServiceImpl::ScreenAvailabilityListenerImpl
489 ::OnScreenAvailabilityChanged(bool available) { 492 ::OnScreenAvailabilityChanged(bool available) {
490 service_->client_->OnScreenAvailabilityUpdated(availability_url_, available); 493 service_->client_->OnScreenAvailabilityUpdated(availability_url_, available);
491 } 494 }
492 495
493 void PresentationServiceImpl::ScreenAvailabilityListenerImpl 496 void PresentationServiceImpl::ScreenAvailabilityListenerImpl
494 ::OnScreenAvailabilityNotSupported() { 497 ::OnScreenAvailabilityNotSupported() {
495 service_->client_->OnScreenAvailabilityNotSupported(availability_url_); 498 service_->client_->OnScreenAvailabilityNotSupported(availability_url_);
496 } 499 }
497 500
498 PresentationServiceImpl::NewSessionCallbackWrapper 501 PresentationServiceImpl::NewPresentationCallbackWrapper::
499 ::NewSessionCallbackWrapper(const NewSessionCallback& callback) 502 NewPresentationCallbackWrapper(const NewPresentationCallback& callback)
500 : callback_(callback) { 503 : callback_(callback) {}
504
505 PresentationServiceImpl::NewPresentationCallbackWrapper::
506 ~NewPresentationCallbackWrapper() {
507 if (!callback_.is_null())
508 InvokeNewPresentationCallbackWithError(callback_);
501 } 509 }
502 510
503 PresentationServiceImpl::NewSessionCallbackWrapper 511 void PresentationServiceImpl::NewPresentationCallbackWrapper::Run(
504 ::~NewSessionCallbackWrapper() { 512 const base::Optional<PresentationInfo>& presentation_info,
505 if (!callback_.is_null())
506 InvokeNewSessionCallbackWithError(callback_);
507 }
508
509 void PresentationServiceImpl::NewSessionCallbackWrapper::Run(
510 const base::Optional<PresentationSessionInfo>& session_info,
511 const base::Optional<PresentationError>& error) { 513 const base::Optional<PresentationError>& error) {
512 DCHECK(!callback_.is_null()); 514 DCHECK(!callback_.is_null());
513 callback_.Run(session_info, error); 515 callback_.Run(presentation_info, error);
514 callback_.Reset(); 516 callback_.Reset();
515 } 517 }
516 518
517 } // namespace content 519 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698