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

Unified Diff: content/renderer/presentation/presentation_dispatcher.cc

Issue 2714693002: [Presentation API] Use connection proxy to change connection state to 'closed' (Closed)
Patch Set: Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698