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

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

Issue 2355723004: [Presentation API] 1-UA: send message between controller and receiver page (Closed)
Patch Set: Merge with changes in Issue 2343013002 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
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 <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 } 74 }
75 } 75 }
76 76
77 } // namespace 77 } // namespace
78 78
79 namespace content { 79 namespace content {
80 80
81 PresentationDispatcher::PresentationDispatcher(RenderFrame* render_frame) 81 PresentationDispatcher::PresentationDispatcher(RenderFrame* render_frame)
82 : RenderFrameObserver(render_frame), 82 : RenderFrameObserver(render_frame),
83 controller_(nullptr), 83 controller_(nullptr),
84 binding_(this) { 84 receiver_(nullptr),
85 } 85 binding_(this) {}
86 86
87 PresentationDispatcher::~PresentationDispatcher() { 87 PresentationDispatcher::~PresentationDispatcher() {
88 // Controller should be destroyed before the dispatcher when frame is 88 // Controller should be destroyed before the dispatcher when frame is
89 // destroyed. 89 // destroyed.
90 DCHECK(!controller_); 90 DCHECK(!controller_);
91 } 91 }
92 92
93 void PresentationDispatcher::setController( 93 void PresentationDispatcher::setController(
94 blink::WebPresentationController* controller) { 94 blink::WebPresentationController* controller) {
95 // There shouldn't be any swapping from one non-null controller to another. 95 // There shouldn't be any swapping from one non-null controller to another.
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 DCHECK(!connection.is_null()); 428 DCHECK(!connection.is_null());
429 controller_->didCloseConnection( 429 controller_->didCloseConnection(
430 new PresentationConnectionClient(std::move(connection)), 430 new PresentationConnectionClient(std::move(connection)),
431 GetWebPresentationConnectionCloseReasonFromMojo(reason), 431 GetWebPresentationConnectionCloseReasonFromMojo(reason),
432 blink::WebString::fromUTF8(message)); 432 blink::WebString::fromUTF8(message));
433 } 433 }
434 434
435 void PresentationDispatcher::OnSessionMessagesReceived( 435 void PresentationDispatcher::OnSessionMessagesReceived(
436 blink::mojom::PresentationSessionInfoPtr session_info, 436 blink::mojom::PresentationSessionInfoPtr session_info,
437 std::vector<blink::mojom::SessionMessagePtr> messages) { 437 std::vector<blink::mojom::SessionMessagePtr> messages) {
438 if (!controller_) 438 auto observer =
439 (receiver_
440 ? static_cast<blink::WebPresentationMessageObserver*>(receiver_)
441 : static_cast<blink::WebPresentationMessageObserver*>(controller_));
442 if (!observer)
439 return; 443 return;
440 444
441 for (size_t i = 0; i < messages.size(); ++i) { 445 for (size_t i = 0; i < messages.size(); ++i) {
442 // Note: Passing batches of messages to the Blink layer would be more 446 // Note: Passing batches of messages to the Blink layer would be more
443 // efficient. 447 // efficient.
444 std::unique_ptr<PresentationConnectionClient> session_client( 448 std::unique_ptr<PresentationConnectionClient> session_client(
445 new PresentationConnectionClient(session_info->url, session_info->id)); 449 new PresentationConnectionClient(session_info->url, session_info->id));
446 switch (messages[i]->type) { 450 switch (messages[i]->type) {
447 case blink::mojom::PresentationMessageType::TEXT: { 451 case blink::mojom::PresentationMessageType::TEXT: {
448 // TODO(mfoltz): Do we need to DCHECK(messages[i]->message)? 452 // TODO(mfoltz): Do we need to DCHECK(messages[i]->message)?
449 controller_->didReceiveSessionTextMessage( 453 observer->didReceiveSessionTextMessage(
450 session_client.release(), 454 session_client.release(),
451 blink::WebString::fromUTF8(messages[i]->message.value())); 455 blink::WebString::fromUTF8(messages[i]->message.value()));
452 break; 456 break;
453 } 457 }
454 case blink::mojom::PresentationMessageType::ARRAY_BUFFER: 458 case blink::mojom::PresentationMessageType::ARRAY_BUFFER:
455 case blink::mojom::PresentationMessageType::BLOB: { 459 case blink::mojom::PresentationMessageType::BLOB: {
456 // TODO(mfoltz): Do we need to DCHECK(messages[i]->data)? 460 // TODO(mfoltz): Do we need to DCHECK(messages[i]->data)?
457 controller_->didReceiveSessionBinaryMessage( 461 observer->didReceiveSessionBinaryMessage(session_client.release(),
458 session_client.release(), &(messages[i]->data->front()), 462 &(messages[i]->data->front()),
459 messages[i]->data->size()); 463 messages[i]->data->size());
460 break; 464 break;
461 } 465 }
462 default: { 466 default: {
463 NOTREACHED(); 467 NOTREACHED();
464 break; 468 break;
465 } 469 }
466 } 470 }
467 } 471 }
468 } 472 }
469 473
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( 547 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(
544 const GURL& availability_url) 548 const GURL& availability_url)
545 : url(availability_url), 549 : url(availability_url),
546 last_known_availability(false), 550 last_known_availability(false),
547 listening_state(ListeningState::INACTIVE) {} 551 listening_state(ListeningState::INACTIVE) {}
548 552
549 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { 553 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() {
550 } 554 }
551 555
552 } // namespace content 556 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698