Index: content/renderer/pepper/pepper_url_loader_host.cc |
diff --git a/content/renderer/pepper/pepper_url_loader_host.cc b/content/renderer/pepper/pepper_url_loader_host.cc |
index 27d427149eb1b45a38f3fefba1d4fec459ade0d5..7b01400c2e698c984559b5fdeb3cae072bf20023 100644 |
--- a/content/renderer/pepper/pepper_url_loader_host.cc |
+++ b/content/renderer/pepper/pepper_url_loader_host.cc |
@@ -359,10 +359,18 @@ void PepperURLLoaderHost::SendOrderedUpdateToPlugin(IPC::Message* message) { |
} |
void PepperURLLoaderHost::Close() { |
- if (loader_.get()) |
+ if (loader_.get()) { |
loader_->cancel(); |
- else if (main_document_loader_) |
- GetFrame()->stopLoading(); |
+ } else if (main_document_loader_) { |
+ // TODO(raymes): Calling WebLocalFrame::stopLoading here is incorrect as it |
+ // cancels all URL loaders associated with the frame. If a client has opened |
+ // other URLLoaders and then closes the main one, the others should still |
+ // remain connected. Work out how to only cancel the main request: |
+ // crbug.com/384197. |
+ blink::WebLocalFrame* frame = GetFrame(); |
+ if (frame) |
+ frame->stopLoading(); |
+ } |
} |
blink::WebLocalFrame* PepperURLLoaderHost::GetFrame() { |