Index: net/cert/multi_threaded_cert_verifier.cc |
diff --git a/net/cert/multi_threaded_cert_verifier.cc b/net/cert/multi_threaded_cert_verifier.cc |
index 4b2f37fbc55b5295e771477c24bef172fd97c0fe..f1b9bb8d1faf19c95a9b231314bebeb6528bc3fd 100644 |
--- a/net/cert/multi_threaded_cert_verifier.cc |
+++ b/net/cert/multi_threaded_cert_verifier.cc |
@@ -348,14 +348,23 @@ class CertVerifierJob { |
} |
void HandleResult( |
- const MultiThreadedCertVerifier::CachedResult& verify_result) { |
+ const MultiThreadedCertVerifier::CachedResult& verify_result, |
+ bool is_first_job) { |
worker_ = NULL; |
net_log_.EndEvent(NetLog::TYPE_CERT_VERIFIER_JOB); |
+ base::TimeDelta latency = base::TimeTicks::Now() - start_time_; |
UMA_HISTOGRAM_CUSTOM_TIMES("Net.CertVerifier_Job_Latency", |
- base::TimeTicks::Now() - start_time_, |
+ latency, |
base::TimeDelta::FromMilliseconds(1), |
base::TimeDelta::FromMinutes(10), |
100); |
+ if (is_first_job) { |
+ UMA_HISTOGRAM_CUSTOM_TIMES("Net.CertVerifier_First_Job_Latency", |
+ latency, |
+ base::TimeDelta::FromMilliseconds(1), |
+ base::TimeDelta::FromMinutes(10), |
+ 100); |
+ } |
PostAll(verify_result); |
} |
@@ -391,6 +400,7 @@ class CertVerifierJob { |
MultiThreadedCertVerifier::MultiThreadedCertVerifier( |
CertVerifyProc* verify_proc) |
: cache_(kMaxCacheEntries), |
+ first_job_(NULL), |
requests_(0), |
cache_hits_(0), |
inflight_joins_(0), |
@@ -474,6 +484,10 @@ int MultiThreadedCertVerifier::Verify(X509Certificate* cert, |
return ERR_INSUFFICIENT_RESOURCES; // Just a guess. |
} |
inflight_.insert(std::make_pair(key, job)); |
+ if (requests_ == 1) { |
+ // Cleared in HandleResult. |
+ first_job_ = job; |
+ } |
} |
CertVerifierRequest* request = |
@@ -551,8 +565,13 @@ void MultiThreadedCertVerifier::HandleResult( |
} |
CertVerifierJob* job = j->second; |
inflight_.erase(j); |
+ bool is_first_job = false; |
+ if (first_job_ == job) { |
+ is_first_job = true; |
+ first_job_ = NULL; |
+ } |
- job->HandleResult(cached_result); |
+ job->HandleResult(cached_result, is_first_job); |
delete job; |
} |