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..4fa29907a1697c2af97ee768226ddaac437a691b 100644 |
--- a/net/cert/multi_threaded_cert_verifier.cc |
+++ b/net/cert/multi_threaded_cert_verifier.cc |
@@ -320,9 +320,11 @@ class CertVerifierWorker { |
class CertVerifierJob { |
public: |
CertVerifierJob(CertVerifierWorker* worker, |
+ bool is_first_job, |
const BoundNetLog& net_log) |
: start_time_(base::TimeTicks::Now()), |
worker_(worker), |
+ is_first_job_(is_first_job), |
net_log_(net_log) { |
net_log_.BeginEvent( |
NetLog::TYPE_CERT_VERIFIER_JOB, |
@@ -351,11 +353,19 @@ class CertVerifierJob { |
const MultiThreadedCertVerifier::CachedResult& verify_result) { |
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); |
} |
@@ -385,6 +395,7 @@ class CertVerifierJob { |
const base::TimeTicks start_time_; |
std::vector<CertVerifierRequest*> requests_; |
CertVerifierWorker* worker_; |
+ bool is_first_job_; |
const BoundNetLog net_log_; |
}; |
@@ -463,7 +474,7 @@ int MultiThreadedCertVerifier::Verify(X509Certificate* cert, |
additional_trust_anchors, |
this); |
job = new CertVerifierJob( |
- worker, |
+ worker, requests_ == 1, |
BoundNetLog::Make(net_log.net_log(), NetLog::SOURCE_CERT_VERIFIER_JOB)); |
if (!worker->Start()) { |
delete job; |