| Index: content/renderer/presentation/presentation_dispatcher.cc
|
| diff --git a/content/renderer/presentation/presentation_dispatcher.cc b/content/renderer/presentation/presentation_dispatcher.cc
|
| index 2743b5d563a1033130166ce77a45b00676ff5738..7621c0193218aaaef9a585d0298021a993426978 100644
|
| --- a/content/renderer/presentation/presentation_dispatcher.cc
|
| +++ b/content/renderer/presentation/presentation_dispatcher.cc
|
| @@ -162,8 +162,9 @@ void PresentationDispatcher::sendString(
|
| return;
|
| }
|
|
|
| - message_request_queue_.push(base::WrapUnique(CreateSendTextMessageRequest(
|
| - presentationUrl, presentationId, message, connection_proxy)));
|
| + message_request_queue_.push_back(
|
| + base::WrapUnique(CreateSendTextMessageRequest(
|
| + presentationUrl, presentationId, message, connection_proxy)));
|
| // Start processing request if only one in the queue.
|
| if (message_request_queue_.size() == 1)
|
| DoSendMessage(message_request_queue_.front().get());
|
| @@ -182,10 +183,11 @@ void PresentationDispatcher::sendArrayBuffer(
|
| return;
|
| }
|
|
|
| - message_request_queue_.push(base::WrapUnique(CreateSendBinaryMessageRequest(
|
| - presentationUrl, presentationId,
|
| - blink::mojom::PresentationMessageType::BINARY, data, length,
|
| - connection_proxy)));
|
| + message_request_queue_.push_back(
|
| + base::WrapUnique(CreateSendBinaryMessageRequest(
|
| + presentationUrl, presentationId,
|
| + blink::mojom::PresentationMessageType::BINARY, data, length,
|
| + connection_proxy)));
|
| // Start processing request if only one in the queue.
|
| if (message_request_queue_.size() == 1)
|
| DoSendMessage(message_request_queue_.front().get());
|
| @@ -204,10 +206,11 @@ void PresentationDispatcher::sendBlobData(
|
| return;
|
| }
|
|
|
| - message_request_queue_.push(base::WrapUnique(CreateSendBinaryMessageRequest(
|
| - presentationUrl, presentationId,
|
| - blink::mojom::PresentationMessageType::BINARY, data, length,
|
| - connection_proxy)));
|
| + message_request_queue_.push_back(
|
| + base::WrapUnique(CreateSendBinaryMessageRequest(
|
| + presentationUrl, presentationId,
|
| + blink::mojom::PresentationMessageType::BINARY, data, length,
|
| + connection_proxy)));
|
| // Start processing request if only one in the queue.
|
| if (message_request_queue_.size() == 1)
|
| DoSendMessage(message_request_queue_.front().get());
|
| @@ -239,7 +242,7 @@ void PresentationDispatcher::HandleSendMessageRequests(bool success) {
|
| return;
|
| }
|
|
|
| - message_request_queue_.pop();
|
| + message_request_queue_.pop_front();
|
| if (!message_request_queue_.empty()) {
|
| DoSendMessage(message_request_queue_.front().get());
|
| }
|
| @@ -261,7 +264,19 @@ void PresentationDispatcher::SetControllerConnection(
|
|
|
| void PresentationDispatcher::closeSession(
|
| const blink::WebURL& presentationUrl,
|
| - const blink::WebString& presentationId) {
|
| + const blink::WebString& presentationId,
|
| + const blink::WebPresentationConnectionProxy* connection_proxy) {
|
| + message_request_queue_.erase(
|
| + std::remove_if(message_request_queue_.begin(),
|
| + message_request_queue_.end(),
|
| + [&connection_proxy](
|
| + const std::unique_ptr<SendMessageRequest>& request) {
|
| + return request->connection_proxy == connection_proxy;
|
| + }),
|
| + message_request_queue_.end());
|
| +
|
| + connection_proxy->close();
|
| +
|
| ConnectToPresentationServiceIfNeeded();
|
| presentation_service_->CloseConnection(presentationUrl,
|
| presentationId.utf8());
|
|
|