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

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: Rebase 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 a60c41600af8f872ec32d63111eb9e10a38366fa..db35198ad4810e83f7b9a1c0d869f026f251e3f8 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"
@@ -260,7 +260,7 @@ ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob(
}
ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() {
- stream_reader_.reset();
+ data_pipe_reader_.reset();
file_size_resolver_.reset();
if (!ShouldRecordResult())
@@ -311,7 +311,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();
@@ -366,8 +366,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);
@@ -563,6 +563,7 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
ServiceWorkerStatusCode status,
ServiceWorkerFetchEventResult fetch_result,
const ServiceWorkerResponse& response,
+ blink::mojom::ServiceWorkerStreamHandlePtr stream_handle,
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
@@ -628,13 +629,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.
+ if (!stream_handle.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(stream_handle)));
+ data_pipe_reader_->Start();
return;
}

Powered by Google App Engine
This is Rietveld 408576698