| Index: content/browser/service_worker/service_worker_cache_writer.cc
|
| diff --git a/content/browser/service_worker/service_worker_cache_writer.cc b/content/browser/service_worker/service_worker_cache_writer.cc
|
| index 20c6987934cf919694d1333bb265f40efff8c1ec..b3fabeb9b5b67c459de4594c3e330caed68134fc 100644
|
| --- a/content/browser/service_worker/service_worker_cache_writer.cc
|
| +++ b/content/browser/service_worker/service_worker_cache_writer.cc
|
| @@ -115,14 +115,16 @@ int ServiceWorkerCacheWriter::DoLoop(int status) {
|
| }
|
|
|
| ServiceWorkerCacheWriter::ServiceWorkerCacheWriter(
|
| - const ResponseReaderCreator& reader_creator,
|
| - const ResponseWriterCreator& writer_creator)
|
| + scoped_ptr<ServiceWorkerResponseReader> compare_reader,
|
| + scoped_ptr<ServiceWorkerResponseReader> copy_reader,
|
| + scoped_ptr<ServiceWorkerResponseWriter> writer)
|
| : state_(STATE_START),
|
| io_pending_(false),
|
| comparing_(false),
|
| did_replace_(false),
|
| - reader_creator_(reader_creator),
|
| - writer_creator_(writer_creator),
|
| + compare_reader_(std::move(compare_reader)),
|
| + copy_reader_(std::move(copy_reader)),
|
| + writer_(std::move(writer)),
|
| weak_factory_(this) {}
|
|
|
| ServiceWorkerCacheWriter::~ServiceWorkerCacheWriter() {}
|
| @@ -196,8 +198,7 @@ net::Error ServiceWorkerCacheWriter::MaybeWriteData(
|
|
|
| int ServiceWorkerCacheWriter::DoStart(int result) {
|
| bytes_written_ = 0;
|
| - compare_reader_ = reader_creator_.Run();
|
| - if (compare_reader_.get()) {
|
| + if (compare_reader_) {
|
| state_ = STATE_READ_HEADERS_FOR_COMPARE;
|
| comparing_ = true;
|
| } else {
|
| @@ -306,8 +307,8 @@ int ServiceWorkerCacheWriter::DoReadDataForCompareDone(int result) {
|
|
|
| int ServiceWorkerCacheWriter::DoReadHeadersForCopy(int result) {
|
| DCHECK_GE(result, 0);
|
| + DCHECK(copy_reader_);
|
| bytes_copied_ = 0;
|
| - copy_reader_ = reader_creator_.Run();
|
| headers_to_read_ = new HttpResponseInfoIOBuffer;
|
| data_to_copy_ = new net::IOBuffer(kCopyBufferSize);
|
| state_ = STATE_READ_HEADERS_FOR_COPY_DONE;
|
| @@ -324,14 +325,11 @@ int ServiceWorkerCacheWriter::DoReadHeadersForCopyDone(int result) {
|
| }
|
|
|
| // Write the just-read headers back to the cache.
|
| -// Note that this method must create |writer_|, since the only paths to this
|
| -// state never create a writer.
|
| -// Also note that this *discards* the read headers and replaces them with the
|
| -// net headers.
|
| +// Note that this *discards* the read headers and replaces them with the net
|
| +// headers.
|
| int ServiceWorkerCacheWriter::DoWriteHeadersForCopy(int result) {
|
| DCHECK_GE(result, 0);
|
| - DCHECK(!writer_);
|
| - writer_ = writer_creator_.Run();
|
| + DCHECK(writer_);
|
| state_ = STATE_WRITE_HEADERS_FOR_COPY_DONE;
|
| return WriteInfoHelper(writer_, headers_to_write_.get());
|
| }
|
| @@ -388,7 +386,7 @@ int ServiceWorkerCacheWriter::DoWriteDataForCopyDone(int result) {
|
|
|
| int ServiceWorkerCacheWriter::DoWriteHeadersForPassthrough(int result) {
|
| DCHECK_GE(result, 0);
|
| - writer_ = writer_creator_.Run();
|
| + DCHECK(writer_);
|
| state_ = STATE_WRITE_HEADERS_FOR_PASSTHROUGH_DONE;
|
| return WriteInfoHelper(writer_, headers_to_write_.get());
|
| }
|
|
|