| Index: content/renderer/presentation/presentation_dispatcher.cc
|
| diff --git a/content/renderer/presentation/presentation_dispatcher.cc b/content/renderer/presentation/presentation_dispatcher.cc
|
| index a0b3125568cfa47217c6424ab470549d34f99c92..2dafd9566aaec6c524c50049049ed7baefd34bc6 100644
|
| --- a/content/renderer/presentation/presentation_dispatcher.cc
|
| +++ b/content/renderer/presentation/presentation_dispatcher.cc
|
| @@ -81,8 +81,8 @@ namespace content {
|
| PresentationDispatcher::PresentationDispatcher(RenderFrame* render_frame)
|
| : RenderFrameObserver(render_frame),
|
| controller_(nullptr),
|
| - binding_(this) {
|
| -}
|
| + receiver_(nullptr),
|
| + binding_(this) {}
|
|
|
| PresentationDispatcher::~PresentationDispatcher() {
|
| // Controller should be destroyed before the dispatcher when frame is
|
| @@ -435,7 +435,11 @@ void PresentationDispatcher::OnConnectionClosed(
|
| void PresentationDispatcher::OnSessionMessagesReceived(
|
| blink::mojom::PresentationSessionInfoPtr session_info,
|
| std::vector<blink::mojom::SessionMessagePtr> messages) {
|
| - if (!controller_)
|
| + auto observer =
|
| + (receiver_
|
| + ? static_cast<blink::WebPresentationMessageObserver*>(receiver_)
|
| + : static_cast<blink::WebPresentationMessageObserver*>(controller_));
|
| + if (!observer)
|
| return;
|
|
|
| for (size_t i = 0; i < messages.size(); ++i) {
|
| @@ -446,7 +450,7 @@ void PresentationDispatcher::OnSessionMessagesReceived(
|
| switch (messages[i]->type) {
|
| case blink::mojom::PresentationMessageType::TEXT: {
|
| // TODO(mfoltz): Do we need to DCHECK(messages[i]->message)?
|
| - controller_->didReceiveSessionTextMessage(
|
| + observer->didReceiveSessionTextMessage(
|
| session_client.release(),
|
| blink::WebString::fromUTF8(messages[i]->message.value()));
|
| break;
|
| @@ -454,9 +458,9 @@ void PresentationDispatcher::OnSessionMessagesReceived(
|
| case blink::mojom::PresentationMessageType::ARRAY_BUFFER:
|
| case blink::mojom::PresentationMessageType::BLOB: {
|
| // TODO(mfoltz): Do we need to DCHECK(messages[i]->data)?
|
| - controller_->didReceiveSessionBinaryMessage(
|
| - session_client.release(), &(messages[i]->data->front()),
|
| - messages[i]->data->size());
|
| + observer->didReceiveSessionBinaryMessage(session_client.release(),
|
| + &(messages[i]->data->front()),
|
| + messages[i]->data->size());
|
| break;
|
| }
|
| default: {
|
|
|