| 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;
|
|
|