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

Side by Side Diff: components/cronet/android/cronet_url_request_context_adapter.cc

Issue 2237603002: Cronet/QUIC - Added histograms to measure the time spent to seriliaze (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/cronet/android/cronet_url_request_context_adapter.h" 5 #include "components/cronet/android/cronet_url_request_context_adapter.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <map> 11 #include <map>
12 #include <utility> 12 #include <utility>
13 13
14 #include "base/android/jni_android.h" 14 #include "base/android/jni_android.h"
15 #include "base/android/jni_array.h" 15 #include "base/android/jni_array.h"
16 #include "base/android/jni_string.h" 16 #include "base/android/jni_string.h"
17 #include "base/base64.h" 17 #include "base/base64.h"
18 #include "base/bind.h" 18 #include "base/bind.h"
19 #include "base/files/file_path.h" 19 #include "base/files/file_path.h"
20 #include "base/files/file_util.h" 20 #include "base/files/file_util.h"
21 #include "base/files/scoped_file.h" 21 #include "base/files/scoped_file.h"
22 #include "base/lazy_instance.h" 22 #include "base/lazy_instance.h"
23 #include "base/logging.h" 23 #include "base/logging.h"
24 #include "base/macros.h" 24 #include "base/macros.h"
25 #include "base/memory/ptr_util.h" 25 #include "base/memory/ptr_util.h"
26 #include "base/memory/scoped_vector.h" 26 #include "base/memory/scoped_vector.h"
27 #include "base/message_loop/message_loop.h" 27 #include "base/message_loop/message_loop.h"
28 #include "base/metrics/histogram_macros.h"
28 #include "base/metrics/statistics_recorder.h" 29 #include "base/metrics/statistics_recorder.h"
29 #include "base/single_thread_task_runner.h" 30 #include "base/single_thread_task_runner.h"
30 #include "base/time/time.h" 31 #include "base/time/time.h"
31 #include "base/values.h" 32 #include "base/values.h"
32 #include "components/cronet/android/cert/cert_verifier_cache_serializer.h" 33 #include "components/cronet/android/cert/cert_verifier_cache_serializer.h"
33 #include "components/cronet/android/cert/proto/cert_verification.pb.h" 34 #include "components/cronet/android/cert/proto/cert_verification.pb.h"
34 #include "components/cronet/histogram_manager.h" 35 #include "components/cronet/histogram_manager.h"
35 #include "components/cronet/url_request_context_config.h" 36 #include "components/cronet/url_request_context_config.h"
36 #include "components/prefs/pref_change_registrar.h" 37 #include "components/prefs/pref_change_registrar.h"
37 #include "components/prefs/pref_filter.h" 38 #include "components/prefs/pref_filter.h"
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 net::AlternateProtocol::QUIC, "", 663 net::AlternateProtocol::QUIC, "",
663 static_cast<uint16_t>(quic_hint.alternate_port)); 664 static_cast<uint16_t>(quic_hint.alternate_port));
664 context_->http_server_properties()->SetAlternativeService( 665 context_->http_server_properties()->SetAlternativeService(
665 quic_server, alternative_service, base::Time::Max()); 666 quic_server, alternative_service, base::Time::Max());
666 } 667 }
667 } 668 }
668 669
669 // If there is a cert_verifier, then populate its cache with 670 // If there is a cert_verifier, then populate its cache with
670 // |cert_verifier_data|. 671 // |cert_verifier_data|.
671 if (!config->cert_verifier_data.empty() && context_->cert_verifier()) { 672 if (!config->cert_verifier_data.empty() && context_->cert_verifier()) {
673 base::TimeTicks start_time(base::TimeTicks::Now());
672 std::string data; 674 std::string data;
673 cronet_pb::CertVerificationCache cert_verification_cache; 675 cronet_pb::CertVerificationCache cert_verification_cache;
674 if (base::Base64Decode(config->cert_verifier_data, &data) && 676 if (base::Base64Decode(config->cert_verifier_data, &data) &&
675 cert_verification_cache.ParseFromString(data)) { 677 cert_verification_cache.ParseFromString(data)) {
676 DeserializeCertVerifierCache(cert_verification_cache, 678 DeserializeCertVerifierCache(cert_verification_cache,
677 reinterpret_cast<net::CachingCertVerifier*>( 679 reinterpret_cast<net::CachingCertVerifier*>(
678 context_->cert_verifier())); 680 context_->cert_verifier()));
679 } 681 }
682 UMA_HISTOGRAM_TIMES("Net.Cronet.CertVerifierCache.DeserializeTime",
683 base::TimeTicks::Now() - start_time);
680 } 684 }
681 685
682 // Iterate through PKP configuration for every host. 686 // Iterate through PKP configuration for every host.
683 for (const auto& pkp : config->pkp_list) { 687 for (const auto& pkp : config->pkp_list) {
684 // Add the host pinning. 688 // Add the host pinning.
685 context_->transport_security_state()->AddHPKP( 689 context_->transport_security_state()->AddHPKP(
686 pkp->host, pkp->expiration_date, pkp->include_subdomains, 690 pkp->host, pkp->expiration_date, pkp->include_subdomains,
687 pkp->pin_hashes, GURL::EmptyGURL()); 691 pkp->pin_hashes, GURL::EmptyGURL());
688 } 692 }
689 693
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 FROM_HERE, 800 FROM_HERE,
797 base::Bind( 801 base::Bind(
798 &CronetURLRequestContextAdapter::GetCertVerifierDataOnNetworkThread, 802 &CronetURLRequestContextAdapter::GetCertVerifierDataOnNetworkThread,
799 base::Unretained(this))); 803 base::Unretained(this)));
800 } 804 }
801 805
802 void CronetURLRequestContextAdapter::GetCertVerifierDataOnNetworkThread() { 806 void CronetURLRequestContextAdapter::GetCertVerifierDataOnNetworkThread() {
803 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread()); 807 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
804 std::string encoded_data; 808 std::string encoded_data;
805 if (is_context_initialized_ && context_->cert_verifier()) { 809 if (is_context_initialized_ && context_->cert_verifier()) {
810 base::TimeTicks start_time(base::TimeTicks::Now());
806 std::string data; 811 std::string data;
807 cronet_pb::CertVerificationCache cert_cache = 812 cronet_pb::CertVerificationCache cert_cache =
808 SerializeCertVerifierCache(*reinterpret_cast<net::CachingCertVerifier*>( 813 SerializeCertVerifierCache(*reinterpret_cast<net::CachingCertVerifier*>(
809 context_->cert_verifier())); 814 context_->cert_verifier()));
810 cert_cache.SerializeToString(&data); 815 cert_cache.SerializeToString(&data);
811 base::Base64Encode(data, &encoded_data); 816 base::Base64Encode(data, &encoded_data);
817 UMA_HISTOGRAM_TIMES("Net.Cronet.CertVerifierCache.SerializeTime",
rkaplow 2016/08/11 17:14:23 you can simplify this using a SCOPED_UMA_HISTOGRAM
ramant (doing other things) 2016/08/11 17:21:15 Done.
818 base::TimeTicks::Now() - start_time);
812 } 819 }
813 JNIEnv* env = base::android::AttachCurrentThread(); 820 JNIEnv* env = base::android::AttachCurrentThread();
814 Java_CronetUrlRequestContext_onGetCertVerifierData( 821 Java_CronetUrlRequestContext_onGetCertVerifierData(
815 env, jcronet_url_request_context_.obj(), 822 env, jcronet_url_request_context_.obj(),
816 base::android::ConvertUTF8ToJavaString(env, encoded_data).obj()); 823 base::android::ConvertUTF8ToJavaString(env, encoded_data).obj());
817 } 824 }
818 825
819 base::Thread* CronetURLRequestContextAdapter::GetFileThread() { 826 base::Thread* CronetURLRequestContextAdapter::GetFileThread() {
820 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread()); 827 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
821 if (!file_thread_) { 828 if (!file_thread_) {
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 JNIEnv* env, 988 JNIEnv* env,
982 const JavaParamRef<jclass>& jcaller) { 989 const JavaParamRef<jclass>& jcaller) {
983 base::StatisticsRecorder::Initialize(); 990 base::StatisticsRecorder::Initialize();
984 std::vector<uint8_t> data; 991 std::vector<uint8_t> data;
985 if (!HistogramManager::GetInstance()->GetDeltas(&data)) 992 if (!HistogramManager::GetInstance()->GetDeltas(&data))
986 return ScopedJavaLocalRef<jbyteArray>(); 993 return ScopedJavaLocalRef<jbyteArray>();
987 return base::android::ToJavaByteArray(env, &data[0], data.size()); 994 return base::android::ToJavaByteArray(env, &data[0], data.size());
988 } 995 }
989 996
990 } // namespace cronet 997 } // namespace cronet
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698