Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1313)

Unified Diff: content/browser/service_worker/service_worker_url_request_job.cc

Issue 2703343002: ServiceWorker: Use mojo's data pipe for respondWith(stream) (Closed)
Patch Set: Make SWDataPipeReader::State private Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698