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

Side by Side Diff: content/renderer/presentation/presentation_dispatcher.cc

Issue 2196143002: Revert of [Presentation API] Convert presentation.mojom to new wrapper types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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/renderer/presentation/presentation_dispatcher.h" 5 #include "content/renderer/presentation/presentation_dispatcher.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 306
307 // Remove all pending send message requests. 307 // Remove all pending send message requests.
308 MessageRequestQueue empty; 308 MessageRequestQueue empty;
309 std::swap(message_request_queue_, empty); 309 std::swap(message_request_queue_, empty);
310 } 310 }
311 311
312 void PresentationDispatcher::OnDestruct() { 312 void PresentationDispatcher::OnDestruct() {
313 delete this; 313 delete this;
314 } 314 }
315 315
316 void PresentationDispatcher::OnScreenAvailabilityUpdated(const std::string& url, 316 void PresentationDispatcher::OnScreenAvailabilityUpdated(
317 bool available) { 317 const mojo::String& url, bool available) {
318 auto status_it = availability_status_.find(url); 318 const std::string& availability_url = url.get();
319 auto status_it = availability_status_.find(availability_url);
319 if (status_it == availability_status_.end()) 320 if (status_it == availability_status_.end())
320 return; 321 return;
321 AvailabilityStatus* status = status_it->second.get(); 322 AvailabilityStatus* status = status_it->second.get();
322 DCHECK(status); 323 DCHECK(status);
323 324
324 if (status->listening_state == ListeningState::WAITING) 325 if (status->listening_state == ListeningState::WAITING)
325 status->listening_state = ListeningState::ACTIVE; 326 status->listening_state = ListeningState::ACTIVE;
326 327
327 for (auto* observer : status->availability_observers) 328 for (auto* observer : status->availability_observers)
328 observer->availabilityChanged(available); 329 observer->availabilityChanged(available);
329 330
330 for (AvailabilityCallbacksMap::iterator iter(&status->availability_callbacks); 331 for (AvailabilityCallbacksMap::iterator iter(&status->availability_callbacks);
331 !iter.IsAtEnd(); iter.Advance()) { 332 !iter.IsAtEnd(); iter.Advance()) {
332 iter.GetCurrentValue()->onSuccess(available); 333 iter.GetCurrentValue()->onSuccess(available);
333 } 334 }
334 status->last_known_availability = available; 335 status->last_known_availability = available;
335 status->availability_callbacks.Clear(); 336 status->availability_callbacks.Clear();
336 UpdateListeningState(status); 337 UpdateListeningState(status);
337 } 338 }
338 339
339 void PresentationDispatcher::OnScreenAvailabilityNotSupported( 340 void PresentationDispatcher::OnScreenAvailabilityNotSupported(
340 const std::string& url) { 341 const mojo::String& url) {
341 auto status_it = availability_status_.find(url); 342 const std::string& availability_url = url.get();
343 auto status_it = availability_status_.find(availability_url);
342 if (status_it == availability_status_.end()) 344 if (status_it == availability_status_.end())
343 return; 345 return;
344 AvailabilityStatus* status = status_it->second.get(); 346 AvailabilityStatus* status = status_it->second.get();
345 DCHECK(status); 347 DCHECK(status);
346 DCHECK(status->listening_state == ListeningState::WAITING); 348 DCHECK(status->listening_state == ListeningState::WAITING);
347 349
348 const blink::WebString& not_supported_error = blink::WebString::fromUTF8( 350 const blink::WebString& not_supported_error = blink::WebString::fromUTF8(
349 "getAvailability() isn't supported at the moment. It can be due to " 351 "getAvailability() isn't supported at the moment. It can be due to "
350 "a permanent or temporary system limitation. It is recommended to " 352 "a permanent or temporary system limitation. It is recommended to "
351 "try to blindly start a session in that case."); 353 "try to blindly start a session in that case.");
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 400
399 DCHECK(!connection.is_null()); 401 DCHECK(!connection.is_null());
400 controller_->didChangeSessionState( 402 controller_->didChangeSessionState(
401 new PresentationConnectionClient(std::move(connection)), 403 new PresentationConnectionClient(std::move(connection)),
402 GetWebPresentationConnectionStateFromMojo(state)); 404 GetWebPresentationConnectionStateFromMojo(state));
403 } 405 }
404 406
405 void PresentationDispatcher::OnConnectionClosed( 407 void PresentationDispatcher::OnConnectionClosed(
406 blink::mojom::PresentationSessionInfoPtr connection, 408 blink::mojom::PresentationSessionInfoPtr connection,
407 blink::mojom::PresentationConnectionCloseReason reason, 409 blink::mojom::PresentationConnectionCloseReason reason,
408 const std::string& message) { 410 const mojo::String& message) {
409 if (!controller_) 411 if (!controller_)
410 return; 412 return;
411 413
412 DCHECK(!connection.is_null()); 414 DCHECK(!connection.is_null());
413 controller_->didCloseConnection( 415 controller_->didCloseConnection(
414 new PresentationConnectionClient(std::move(connection)), 416 new PresentationConnectionClient(std::move(connection)),
415 GetWebPresentationConnectionCloseReasonFromMojo(reason), 417 GetWebPresentationConnectionCloseReasonFromMojo(reason),
416 blink::WebString::fromUTF8(message)); 418 blink::WebString::fromUTF8(message));
417 } 419 }
418 420
419 void PresentationDispatcher::OnSessionMessagesReceived( 421 void PresentationDispatcher::OnSessionMessagesReceived(
420 blink::mojom::PresentationSessionInfoPtr session_info, 422 blink::mojom::PresentationSessionInfoPtr session_info,
421 std::vector<blink::mojom::SessionMessagePtr> messages) { 423 mojo::Array<blink::mojom::SessionMessagePtr> messages) {
422 if (!controller_) 424 if (!controller_)
423 return; 425 return;
424 426
425 for (size_t i = 0; i < messages.size(); ++i) { 427 for (size_t i = 0; i < messages.size(); ++i) {
426 // Note: Passing batches of messages to the Blink layer would be more 428 // Note: Passing batches of messages to the Blink layer would be more
427 // efficient. 429 // efficient.
428 std::unique_ptr<PresentationConnectionClient> session_client( 430 std::unique_ptr<PresentationConnectionClient> session_client(
429 new PresentationConnectionClient(session_info->url, session_info->id)); 431 new PresentationConnectionClient(session_info->url, session_info->id));
430 switch (messages[i]->type) { 432 switch (messages[i]->type) {
431 case blink::mojom::PresentationMessageType::TEXT: { 433 case blink::mojom::PresentationMessageType::TEXT: {
432 // TODO(mfoltz): Do we need to DCHECK(messages[i]->message)?
433 controller_->didReceiveSessionTextMessage( 434 controller_->didReceiveSessionTextMessage(
434 session_client.release(), 435 session_client.release(),
435 blink::WebString::fromUTF8(messages[i]->message.value())); 436 blink::WebString::fromUTF8(messages[i]->message));
436 break; 437 break;
437 } 438 }
438 case blink::mojom::PresentationMessageType::ARRAY_BUFFER: 439 case blink::mojom::PresentationMessageType::ARRAY_BUFFER:
439 case blink::mojom::PresentationMessageType::BLOB: { 440 case blink::mojom::PresentationMessageType::BLOB: {
440 // TODO(mfoltz): Do we need to DCHECK(messages[i]->data)?
441 controller_->didReceiveSessionBinaryMessage( 441 controller_->didReceiveSessionBinaryMessage(
442 session_client.release(), &(messages[i]->data->front()), 442 session_client.release(), &(messages[i]->data.front()),
443 messages[i]->data->size()); 443 messages[i]->data.size());
444 break; 444 break;
445 } 445 }
446 default: { 446 default: {
447 NOTREACHED(); 447 NOTREACHED();
448 break; 448 break;
449 } 449 }
450 } 450 }
451 } 451 }
452 } 452 }
453 453
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 const uint8_t* data, 512 const uint8_t* data,
513 size_t length) { 513 size_t length) {
514 blink::mojom::PresentationSessionInfoPtr session_info = 514 blink::mojom::PresentationSessionInfoPtr session_info =
515 blink::mojom::PresentationSessionInfo::New(); 515 blink::mojom::PresentationSessionInfo::New();
516 session_info->url = presentationUrl.utf8(); 516 session_info->url = presentationUrl.utf8();
517 session_info->id = presentationId.utf8(); 517 session_info->id = presentationId.utf8();
518 518
519 blink::mojom::SessionMessagePtr session_message = 519 blink::mojom::SessionMessagePtr session_message =
520 blink::mojom::SessionMessage::New(); 520 blink::mojom::SessionMessage::New();
521 session_message->type = type; 521 session_message->type = type;
522 session_message->data = std::vector<uint8_t>(data, data + length); 522 std::vector<uint8_t> tmp_data_vector(data, data + length);
523 session_message->data.Swap(&tmp_data_vector);
523 return new SendMessageRequest(std::move(session_info), 524 return new SendMessageRequest(std::move(session_info),
524 std::move(session_message)); 525 std::move(session_message));
525 } 526 }
526 527
527 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( 528 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(
528 const std::string& availability_url) 529 const std::string& availability_url)
529 : url(availability_url), 530 : url(availability_url),
530 last_known_availability(false), 531 last_known_availability(false),
531 listening_state(ListeningState::INACTIVE) {} 532 listening_state(ListeningState::INACTIVE) {}
532 533
533 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { 534 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() {
534 } 535 }
535 536
536 } // namespace content 537 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/presentation/presentation_dispatcher.h ('k') | third_party/WebKit/public/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698