Index: content/browser/frame_host/render_frame_host_impl.cc |
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc |
index 61a6a6ecddbd225faaef6ba1a4bdc820cea21c6a..0317a12a2773189e1dea2e115d6aaf244973cc56 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.cc |
+++ b/content/browser/frame_host/render_frame_host_impl.cc |
@@ -883,6 +883,8 @@ bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) { |
IPC_MESSAGE_HANDLER(FrameHostMsg_RequestOverlayRoutingToken, |
OnRequestOverlayRoutingToken) |
IPC_MESSAGE_HANDLER(FrameHostMsg_ShowCreatedWindow, OnShowCreatedWindow) |
+ IPC_MESSAGE_HANDLER(FrameHostMsg_StreamHandleConsumed, |
+ OnStreamHandleConsumed) |
IPC_END_MESSAGE_MAP() |
// No further actions here, since we may have been deleted. |
@@ -3183,8 +3185,7 @@ void RenderFrameHostImpl::CommitNavigation( |
last_navigation_previews_state_ = common_params.previews_state; |
} |
- // TODO(clamy): Release the stream handle once the renderer has finished |
- // reading it. |
+ // Released in OnStreamHandleConsumed(). |
stream_handle_ = std::move(body); |
// When navigating to a debug url, no commit is expected from the |
@@ -4053,6 +4054,12 @@ void RenderFrameHostImpl::SetLastCommittedSiteUrl(const GURL& url) { |
} |
} |
+void RenderFrameHostImpl::OnStreamHandleConsumed(const GURL& stream_url) { |
+ if (stream_handle_ && stream_handle_->GetURL() == stream_url) { |
+ stream_handle_.reset(); |
+ } |
+} |
+ |
#if defined(OS_ANDROID) |
class RenderFrameHostImpl::JavaInterfaceProvider |