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

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

Issue 2943033003: [PresentationSevice] Use PresentationConnection to send messages from (Closed)
Patch Set: LOG -> DLOG Created 3 years, 6 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 <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 void PresentationDispatcher::OnDefaultPresentationStarted( 528 void PresentationDispatcher::OnDefaultPresentationStarted(
529 const PresentationInfo& presentation_info) { 529 const PresentationInfo& presentation_info) {
530 if (!controller_) 530 if (!controller_)
531 return; 531 return;
532 532
533 auto* connection = 533 auto* connection =
534 controller_->DidStartDefaultPresentation(blink::WebPresentationInfo( 534 controller_->DidStartDefaultPresentation(blink::WebPresentationInfo(
535 presentation_info.presentation_url, 535 presentation_info.presentation_url,
536 blink::WebString::FromUTF8(presentation_info.presentation_id))); 536 blink::WebString::FromUTF8(presentation_info.presentation_id)));
537 537
538 if (connection) { 538 if (connection)
539 SetControllerConnection(presentation_info, connection); 539 SetControllerConnection(presentation_info, connection);
540 // Change blink connection state to 'connected' before listening to
541 // connection message. Remove ListenForConnectionMessage() after
542 // TODO(crbug.com/687011): use BrowserPresentationConnectionProxy to send
543 // message from route to blink connection.
544 presentation_service_->ListenForConnectionMessages(presentation_info);
545 }
546 } 540 }
547 541
548 void PresentationDispatcher::OnConnectionCreated( 542 void PresentationDispatcher::OnConnectionCreated(
549 std::unique_ptr<blink::WebPresentationConnectionCallbacks> callback, 543 std::unique_ptr<blink::WebPresentationConnectionCallbacks> callback,
550 const base::Optional<PresentationInfo>& presentation_info, 544 const base::Optional<PresentationInfo>& presentation_info,
551 const base::Optional<PresentationError>& error) { 545 const base::Optional<PresentationError>& error) {
552 DCHECK(callback); 546 DCHECK(callback);
553 if (error) { 547 if (error) {
554 DCHECK(!presentation_info); 548 DCHECK(!presentation_info);
555 callback->OnError(blink::WebPresentationError( 549 callback->OnError(blink::WebPresentationError(
556 GetWebPresentationErrorType(error->error_type), 550 GetWebPresentationErrorType(error->error_type),
557 blink::WebString::FromUTF8(error->message))); 551 blink::WebString::FromUTF8(error->message)));
558 return; 552 return;
559 } 553 }
560 554
561 DCHECK(presentation_info); 555 DCHECK(presentation_info);
562 callback->OnSuccess(blink::WebPresentationInfo( 556 callback->OnSuccess(blink::WebPresentationInfo(
563 presentation_info->presentation_url, 557 presentation_info->presentation_url,
564 blink::WebString::FromUTF8(presentation_info->presentation_id))); 558 blink::WebString::FromUTF8(presentation_info->presentation_id)));
565 // Change blink connection state to 'connected' before listening to
566 // connection message. Remove ListenForConnectionMessage() after
567 // TODO(crbug.com/687011): use BrowserPresentationConnectionProxy to send
568 // message from route to blink connection.
569 SetControllerConnection(presentation_info.value(), callback->GetConnection()); 559 SetControllerConnection(presentation_info.value(), callback->GetConnection());
570 presentation_service_->ListenForConnectionMessages(presentation_info.value());
571 } 560 }
572 561
573 void PresentationDispatcher::OnReceiverConnectionAvailable( 562 void PresentationDispatcher::OnReceiverConnectionAvailable(
574 const PresentationInfo& presentation_info, 563 const PresentationInfo& presentation_info,
575 blink::mojom::PresentationConnectionPtr controller_connection_ptr, 564 blink::mojom::PresentationConnectionPtr controller_connection_ptr,
576 blink::mojom::PresentationConnectionRequest receiver_connection_request) { 565 blink::mojom::PresentationConnectionRequest receiver_connection_request) {
577 DCHECK(receiver_); 566 DCHECK(receiver_);
578 567
579 // Bind receiver_connection_proxy with PresentationConnection in receiver 568 // Bind receiver_connection_proxy with PresentationConnection in receiver
580 // page. 569 // page.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 return; 601 return;
613 602
614 controller_->DidCloseConnection( 603 controller_->DidCloseConnection(
615 blink::WebPresentationInfo( 604 blink::WebPresentationInfo(
616 presentation_info.presentation_url, 605 presentation_info.presentation_url,
617 blink::WebString::FromUTF8(presentation_info.presentation_id)), 606 blink::WebString::FromUTF8(presentation_info.presentation_id)),
618 GetWebPresentationConnectionCloseReason(reason), 607 GetWebPresentationConnectionCloseReason(reason),
619 blink::WebString::FromUTF8(message)); 608 blink::WebString::FromUTF8(message));
620 } 609 }
621 610
622 void PresentationDispatcher::OnConnectionMessagesReceived(
623 const PresentationInfo& presentation_info,
624 std::vector<PresentationConnectionMessage> messages) {
625 if (!controller_)
626 return;
627
628 for (size_t i = 0; i < messages.size(); ++i) {
629 // Note: Passing batches of messages to the Blink layer would be more
630 // efficient.
631 auto web_presentation_info = blink::WebPresentationInfo(
632 presentation_info.presentation_url,
633 blink::WebString::FromUTF8(presentation_info.presentation_id));
634
635 if (messages[i].is_binary()) {
636 controller_->DidReceiveConnectionBinaryMessage(
637 web_presentation_info, &(messages[i].data->front()),
638 messages[i].data->size());
639 } else {
640 DCHECK(messages[i].message);
641 controller_->DidReceiveConnectionTextMessage(
642 web_presentation_info,
643 blink::WebString::FromUTF8(*messages[i].message));
644 }
645 }
646 }
647
648 void PresentationDispatcher::ConnectToPresentationServiceIfNeeded() { 611 void PresentationDispatcher::ConnectToPresentationServiceIfNeeded() {
649 if (presentation_service_.get()) 612 if (presentation_service_.get())
650 return; 613 return;
651 614
652 render_frame()->GetRemoteInterfaces()->GetInterface(&presentation_service_); 615 render_frame()->GetRemoteInterfaces()->GetInterface(&presentation_service_);
653 blink::mojom::PresentationServiceClientPtr client; 616 blink::mojom::PresentationServiceClientPtr client;
654 binding_.Bind(mojo::MakeRequest(&client)); 617 binding_.Bind(mojo::MakeRequest(&client));
655 presentation_service_->SetClient(std::move(client)); 618 presentation_service_->SetClient(std::move(client));
656 } 619 }
657 620
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 781
819 PresentationDispatcher::ListeningStatus::ListeningStatus( 782 PresentationDispatcher::ListeningStatus::ListeningStatus(
820 const GURL& availability_url) 783 const GURL& availability_url)
821 : url(availability_url), 784 : url(availability_url),
822 last_known_availability(blink::mojom::ScreenAvailability::UNKNOWN), 785 last_known_availability(blink::mojom::ScreenAvailability::UNKNOWN),
823 listening_state(ListeningState::INACTIVE) {} 786 listening_state(ListeningState::INACTIVE) {}
824 787
825 PresentationDispatcher::ListeningStatus::~ListeningStatus() {} 788 PresentationDispatcher::ListeningStatus::~ListeningStatus() {}
826 789
827 } // namespace content 790 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698