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: { |