DescriptionServiceWorkerWriteToCacheJob: refactor
This CL is a re-land of a previously reviewed and approved CL that was reverted: https://codereview.chromium.org/1315443003
ServiceWorkerWriteToCacheJob is a subclass of URLRequestJob that is responsible for filling and updating a write-through cache for ServiceWorker data. Specifically, ServiceWorkerWriteToCacheJob creates an underlying URLRequestJob which it uses to do the actual network request for the script, then returns the script body to the creator of the ServiceWorkerWriteToCacheJob while also storing it in the ServiceWorker cache if it has been updated.
In order to avoid spurious cache rewrites, ServiceWorkerWriteToCacheJob defers writing an entry for as long as possible: if there is an existing entry, it compares incoming network data to the cache entry's data, and only starts writing once there is a mismatch. Since the mismatch may occur after much data has already been handled, once this happens ServiceWorkerWriteToCacheJob must transparently copy all the existing data up to that point from the cache, then resume streaming network data into the cache and back to its consumer. This is the "compare-and-copy" process. If there is no existing entry, network data is streamed directly to the cache; this is the "passthrough" process.
This CL removes the code implementing the compare-and-copy and passthrough processes from ServiceWorkerWriteToCacheJob and moves it into a separate class, ServiceWorkerCacheWriter. ServiceWorkerCacheWriter exposes an asynchronous API for overwriting a single cache entry that is now used by ServiceWorkerWriteToCacheJob.
BUG=474859
TBR=jochen,falken
Committed: https://crrev.com/d778a5a82cdccab2b3cbf4940749753c98e59dcc
Cr-Commit-Position: refs/heads/master@{#349669}
patch from issue 1315443003 at patchset 260001 (http://crrev.com/1315443003#ps260001)
Committed: https://crrev.com/015f4a69ad39e4625648e160dde9b75f8aaad522
Cr-Commit-Position: refs/heads/master@{#350824}
Patch Set 1 : Clean base version #Patch Set 2 : fix layout test failure #
Total comments: 10
Patch Set 3 : Fixes #
Messages
Total messages: 12 (2 generated)
|