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 8e3f35263c895ee3e18f7e609d6483961375c78d..73f66e26d7f3f05f711e57d308bb99350a50e60d 100644 |
--- a/content/browser/service_worker/service_worker_url_request_job.cc |
+++ b/content/browser/service_worker/service_worker_url_request_job.cc |
@@ -34,6 +34,7 @@ |
#include "net/http/http_response_headers.h" |
#include "net/http/http_response_info.h" |
#include "net/http/http_util.h" |
+#include "net/log/net_log.h" |
#include "storage/browser/blob/blob_data_builder.h" |
#include "storage/browser/blob/blob_data_handle.h" |
#include "storage/browser/blob/blob_storage_context.h" |
@@ -42,6 +43,59 @@ |
namespace content { |
+namespace { |
+ |
+net::NetLog::EventType RequestJobResultToNetEventType( |
+ ServiceWorkerMetrics::URLRequestJobResult result) { |
+ using n = net::NetLog; |
+ using m = ServiceWorkerMetrics; |
+ switch (result) { |
+ case m::REQUEST_JOB_FALLBACK_RESPONSE: |
+ return n::TYPE_SERVICE_WORKER_FALLBACK_RESPONSE; |
+ case m::REQUEST_JOB_FALLBACK_FOR_CORS: |
+ return n::TYPE_SERVICE_WORKER_FALLBACK_FOR_CORS; |
+ case m::REQUEST_JOB_HEADERS_ONLY_RESPONSE: |
+ return n::TYPE_SERVICE_WORKER_HEADERS_ONLY_RESPONSE; |
+ case m::REQUEST_JOB_STREAM_RESPONSE: |
+ return n::TYPE_SERVICE_WORKER_STREAM_RESPONSE; |
+ case m::REQUEST_JOB_BLOB_RESPONSE: |
+ return n::TYPE_SERVICE_WORKER_BLOB_RESPONSE; |
+ case m::REQUEST_JOB_ERROR_RESPONSE_STATUS_ZERO: |
+ return n::TYPE_SERVICE_WORKER_ERROR_RESPONSE_STATUS_ZERO; |
+ case m::REQUEST_JOB_ERROR_BAD_BLOB: |
+ return n::TYPE_SERVICE_WORKER_ERROR_BAD_BLOB; |
+ case m::REQUEST_JOB_ERROR_NO_PROVIDER_HOST: |
+ return n::TYPE_SERVICE_WORKER_ERROR_NO_PROVIDER_HOST; |
+ case m::REQUEST_JOB_ERROR_NO_ACTIVE_VERSION: |
+ return n::TYPE_SERVICE_WORKER_ERROR_NO_ACTIVE_VERSION; |
+ case m::REQUEST_JOB_ERROR_FETCH_EVENT_DISPATCH: |
+ return n::TYPE_SERVICE_WORKER_ERROR_FETCH_EVENT_DISPATCH; |
+ case m::REQUEST_JOB_ERROR_BLOB_READ: |
+ return n::TYPE_SERVICE_WORKER_ERROR_BLOB_READ; |
+ case m::REQUEST_JOB_ERROR_STREAM_ABORTED: |
+ return n::TYPE_SERVICE_WORKER_ERROR_STREAM_ABORTED; |
+ case m::REQUEST_JOB_ERROR_KILLED: |
+ return n::TYPE_SERVICE_WORKER_ERROR_KILLED; |
+ case m::REQUEST_JOB_ERROR_KILLED_WITH_BLOB: |
+ return n::TYPE_SERVICE_WORKER_ERROR_KILLED_WITH_BLOB; |
+ case m::REQUEST_JOB_ERROR_KILLED_WITH_STREAM: |
+ return n::TYPE_SERVICE_WORKER_ERROR_KILLED_WITH_STREAM; |
+ case m::REQUEST_JOB_ERROR_NO_REQUEST: |
+ // Fallthrough: we can't log if there's no request. |
+ case m::REQUEST_JOB_ERROR_DESTROYED: |
+ case m::REQUEST_JOB_ERROR_DESTROYED_WITH_BLOB: |
+ case m::REQUEST_JOB_ERROR_DESTROYED_WITH_STREAM: |
+ // Fallthrough: obsolete types. |
+ case m::NUM_REQUEST_JOB_RESULT_TYPES: |
+ // Invalid type. |
+ NOTREACHED() << result; |
+ } |
+ NOTREACHED() << result; |
+ return n::TYPE_FAILED; |
+} |
+ |
+} // namespace |
+ |
ServiceWorkerURLRequestJob::ServiceWorkerURLRequestJob( |
net::URLRequest* request, |
net::NetworkDelegate* network_delegate, |
@@ -90,16 +144,6 @@ void ServiceWorkerURLRequestJob::Start() { |
} |
void ServiceWorkerURLRequestJob::Kill() { |
- if (ShouldRecordResult()) { |
- ServiceWorkerMetrics::URLRequestJobResult result = |
- ServiceWorkerMetrics::REQUEST_JOB_ERROR_KILLED; |
- if (response_body_type_ == STREAM) |
- result = ServiceWorkerMetrics::REQUEST_JOB_ERROR_KILLED_WITH_STREAM; |
- else if (response_body_type_ == BLOB) |
- result = ServiceWorkerMetrics::REQUEST_JOB_ERROR_KILLED_WITH_BLOB; |
- RecordResult(result); |
- } |
- |
net::URLRequestJob::Kill(); |
ClearStream(); |
fetch_dispatcher_.reset(); |
@@ -351,14 +395,12 @@ ServiceWorkerURLRequestJob::~ServiceWorkerURLRequestJob() { |
if (!ShouldRecordResult()) |
return; |
- // TODO(falken): If we don't see many of these, we might merge KILLED and |
- // DESTROYED results together. |
kinuko
2015/07/09 13:52:41
So we didn't see many of these?
falken
2015/07/09 14:26:29
Right, there were zero of these.
|
ServiceWorkerMetrics::URLRequestJobResult result = |
- ServiceWorkerMetrics::REQUEST_JOB_ERROR_DESTROYED; |
+ ServiceWorkerMetrics::REQUEST_JOB_ERROR_KILLED; |
if (response_body_type_ == STREAM) |
- result = ServiceWorkerMetrics::REQUEST_JOB_ERROR_DESTROYED_WITH_STREAM; |
+ result = ServiceWorkerMetrics::REQUEST_JOB_ERROR_KILLED_WITH_STREAM; |
else if (response_body_type_ == BLOB) |
- result = ServiceWorkerMetrics::REQUEST_JOB_ERROR_DESTROYED_WITH_BLOB; |
+ result = ServiceWorkerMetrics::REQUEST_JOB_ERROR_KILLED_WITH_BLOB; |
RecordResult(result); |
} |
@@ -372,6 +414,7 @@ void ServiceWorkerURLRequestJob::MaybeStartRequest() { |
} |
void ServiceWorkerURLRequestJob::StartRequest() { |
+ request()->net_log().AddEvent(net::NetLog::TYPE_SERVICE_WORKER_START_REQUEST); |
switch (response_type_) { |
case NOT_DETERMINED: |
NOTREACHED(); |
@@ -722,6 +765,8 @@ void ServiceWorkerURLRequestJob::RecordResult( |
did_record_result_ = true; |
ServiceWorkerMetrics::RecordURLRequestJobResult(is_main_resource_load_, |
result); |
+ if (request()) |
+ request()->net_log().AddEvent(RequestJobResultToNetEventType(result)); |
} |
void ServiceWorkerURLRequestJob::RecordStatusZeroResponseError( |