Index: content/browser/loader/async_resource_handler.cc |
diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc |
index f007a417fb8ffe997e20c439506d9f8a6834c367..5f568d521e1b5fa70ed68a6db2b5781f0ad4afbb 100644 |
--- a/content/browser/loader/async_resource_handler.cc |
+++ b/content/browser/loader/async_resource_handler.cc |
@@ -87,7 +87,8 @@ AsyncResourceHandler::AsyncResourceHandler( |
did_defer_(false), |
has_checked_for_sufficient_resources_(false), |
sent_received_response_msg_(false), |
- sent_first_data_msg_(false) { |
+ sent_first_data_msg_(false), |
+ detached_reads_(false) { |
InitializeResourceBufferConstants(); |
} |
@@ -247,6 +248,11 @@ bool AsyncResourceHandler::OnReadCompleted(int request_id, int bytes_read, |
if (!bytes_read) |
return true; |
+ if (detached_reads_) { |
+ buffer_->RecycleLeastRecentlyAllocated(); |
+ return true; |
+ } |
+ |
const ResourceRequestInfoImpl* info = |
ResourceRequestInfoImpl::ForRequest(request_); |
if (!info->filter()) |
@@ -384,4 +390,10 @@ void AsyncResourceHandler::ResumeIfDeferred() { |
} |
} |
+void AsyncResourceHandler::SetDetachedReads(bool detached_reads) { |
+ // We don't support moving from detached to not detached |
+ CHECK(!(detached_reads_ && detached_reads)); |
mmenke
2013/10/07 19:16:24
Unless there's some reason to be particularly conc
jkarlin2
2013/10/08 11:53:01
Done.
|
+ detached_reads_ = detached_reads; |
+} |
+ |
} // namespace content |