commit | 0a2606eca625f3eb6715e9b72d2eb3b15410273b | [log] [tgz] |
---|---|---|
author | Ben Kelly <wanderview@chromium.org> | Fri May 01 16:30:36 2020 |
committer | Commit Bot <commit-bot@chromium.org> | Fri May 01 16:30:36 2020 |
tree | 6a9830cbd8f16302ab96ccc9925c66990fa61e67 | |
parent | a2fc0b08f4f230ad5ab01a330fdb93239962e1cf [diff] |
Fetch: Track side_data_blob in BodyStreamBuffer. In crrev.com/c/1836391 we began always storing the cache_storage entry blob in the fetch_api_response's side_data_blob field. This allowed us to provide code cache data when the main body was provided as either a blob or as a data pipe. Unfortunately, this had an unanticipated side effect. A Response object's side_data_blob is never cleared. Therefore that blob handle is retained until the Response object is garbage collected; even if the Response body was completely drained. This in turn holds the cache_storage entry open which can cause further problems as described in crbug/1070389. The problem here is that the side_data_blob should have the same life time as the main body, but instead its held in the Response object which does not directly have this information. This CL fixes the issue by moving the side_data_blob down into the BodyStreamBuffer class. This allows to drop its reference once the body is drained or begins loading. This fixes the data retention issue for all possible uses of Response. Note, however, this only partially fixes crbug/1070389. Its still possible for cache_storage entries to be held open for legitimate reasons; e.g. script holding alive an unconsumed Response object. To fix those further issues will require additional changes in simple disk_cache. Bug: 1010624,1070389 Change-Id: I2f9d29f346248e233bf3933e1da287d9e493074a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2172584 Commit-Queue: Ben Kelly <wanderview@chromium.org> Reviewed-by: Tsuyoshi Horo <horo@chromium.org> Cr-Commit-Position: refs/heads/master@{#764678}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.