Chromium Code Reviews| Index: content/browser/service_worker/service_worker_url_request_job.cc |
| diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc |
| index 4c7dbf357fb6305115efb300357a1f0ffb1c61b2..89eb8cb498aafcf5dc9cc0d153fef76bdc6348b9 100644 |
| --- a/content/browser/service_worker/service_worker_url_request_job.cc |
| +++ b/content/browser/service_worker/service_worker_url_request_job.cc |
| @@ -29,10 +29,10 @@ |
| #include "content/browser/resource_context_impl.h" |
| #include "content/browser/service_worker/embedded_worker_instance.h" |
| #include "content/browser/service_worker/service_worker_blob_reader.h" |
| +#include "content/browser/service_worker/service_worker_data_pipe_reader.h" |
| #include "content/browser/service_worker/service_worker_fetch_dispatcher.h" |
| #include "content/browser/service_worker/service_worker_provider_host.h" |
| #include "content/browser/service_worker/service_worker_response_info.h" |
| -#include "content/browser/service_worker/service_worker_stream_reader.h" |
| #include "content/common/resource_request_body_impl.h" |
| #include "content/common/service_worker/service_worker_types.h" |
| #include "content/common/service_worker/service_worker_utils.h" |
| @@ -261,7 +261,7 @@ ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob( |
| } |
| ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() { |
| - stream_reader_.reset(); |
| + data_pipe_reader_.reset(); |
| file_size_resolver_.reset(); |
| if (!ShouldRecordResult()) |
| @@ -312,7 +312,7 @@ void ServiceWorkerURLRequestJob::Start() { |
| void ServiceWorkerURLRequestJob::Kill() { |
| net::URLRequestJob::Kill(); |
| - stream_reader_.reset(); |
| + data_pipe_reader_.reset(); |
| fetch_dispatcher_.reset(); |
| blob_reader_.reset(); |
| weak_factory_.InvalidateWeakPtrs(); |
| @@ -367,8 +367,8 @@ int ServiceWorkerURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) { |
| DCHECK(buf); |
| DCHECK_GE(buf_size, 0); |
| - if (stream_reader_) |
| - return stream_reader_->ReadRawData(buf, buf_size); |
| + if (data_pipe_reader_) |
| + return data_pipe_reader_->ReadRawData(buf, buf_size); |
| if (blob_reader_) |
| return blob_reader_->ReadRawData(buf, buf_size); |
| @@ -564,6 +564,7 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
| ServiceWorkerStatusCode status, |
| ServiceWorkerFetchEventResult fetch_result, |
| const ServiceWorkerResponse& response, |
| + blink::mojom::ServiceWorkerStreamHandlePtr body_as_stream, |
| const scoped_refptr<ServiceWorkerVersion>& version) { |
| // Do not clear |fetch_dispatcher_| if it has dispatched a navigation preload |
| // request to keep the mojom::URLLoader related objects in it, because the |
| @@ -629,13 +630,13 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( |
| DCHECK(main_script_http_info); |
| http_response_info_.reset(new net::HttpResponseInfo(*main_script_http_info)); |
| - // Set up a request for reading the stream. |
| - if (response.stream_url.is_valid()) { |
| - DCHECK(response.blob_uuid.empty()); |
| + // Process stream using mojo's data pipe. |
|
falken
2017/04/18 05:05:33
"Mojo's date pipe" or "mojo::DataPipe"
shimazu
2017/04/19 05:49:46
Done.
|
| + if (!body_as_stream.is_null()) { |
| SetResponseBodyType(STREAM); |
| SetResponse(response); |
| - stream_reader_.reset(new ServiceWorkerStreamReader(this, version)); |
| - stream_reader_->Start(response.stream_url); |
| + data_pipe_reader_.reset(new ServiceWorkerDataPipeReader( |
| + this, version, std::move(body_as_stream))); |
| + data_pipe_reader_->Start(); |
| return; |
| } |