| Index: net/quic/chromium/quic_stream_factory.cc
|
| diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc
|
| index 1fe0bf28f1878cae0695a69dfbbe1396be04291c..0c8cccc505b04c9502c1eb91250457154e1bccb4 100644
|
| --- a/net/quic/chromium/quic_stream_factory.cc
|
| +++ b/net/quic/chromium/quic_stream_factory.cc
|
| @@ -67,6 +67,12 @@ using NetworkHandle = net::NetworkChangeNotifier::NetworkHandle;
|
|
|
| namespace net {
|
|
|
| +// Returns the estimate of dynamically allocated memory of an IPEndPoint in
|
| +// bytes. Used in tracking IPAliasMap.
|
| +size_t EstimateMemoryUsage(const IPEndPoint& end_point) {
|
| + return 0;
|
| +}
|
| +
|
| namespace {
|
|
|
| enum CreateSessionFailure {
|
| @@ -290,6 +296,12 @@ class QuicStreamFactory::CertVerifierJob {
|
|
|
| const QuicServerId& server_id() const { return server_id_; }
|
|
|
| + size_t EstimateMemoryUsage() const {
|
| + // TODO(xunjieli): crbug.com/669108. Track |verify_context_| and
|
| + // |verify_details_|.
|
| + return base::trace_event::EstimateMemoryUsage(verify_error_details_);
|
| + }
|
| +
|
| private:
|
| const QuicServerId server_id_;
|
| ProofVerifierCallbackImpl* verify_callback_;
|
| @@ -347,6 +359,9 @@ class QuicStreamFactory::Job {
|
|
|
| base::WeakPtr<Job> GetWeakPtr() { return weak_factory_.GetWeakPtr(); }
|
|
|
| + // Returns the estimate of dynamically allocated memory in bytes.
|
| + size_t EstimateMemoryUsage() const;
|
| +
|
| private:
|
| enum IoState {
|
| STATE_NONE,
|
| @@ -493,6 +508,11 @@ void QuicStreamFactory::Job::CancelWaitForDataReadyCallback() {
|
| OnIOComplete(OK);
|
| }
|
|
|
| +size_t QuicStreamFactory::Job::EstimateMemoryUsage() const {
|
| + return base::trace_event::EstimateMemoryUsage(key_) +
|
| + base::trace_event::EstimateMemoryUsage(server_info_);
|
| +}
|
| +
|
| int QuicStreamFactory::Job::DoResolveHost() {
|
| dns_resolution_start_time_ = base::TimeTicks::Now();
|
| // Start loading the data now, and wait for it after we resolve the host.
|
| @@ -924,19 +944,32 @@ void QuicStreamFactory::set_quic_server_info_factory(
|
| void QuicStreamFactory::DumpMemoryStats(
|
| base::trace_event::ProcessMemoryDump* pmd,
|
| const std::string& parent_absolute_name) const {
|
| - if (all_sessions_.empty())
|
| + if (all_sessions_.empty() && active_jobs_.empty())
|
| return;
|
| base::trace_event::MemoryAllocatorDump* factory_dump =
|
| pmd->CreateAllocatorDump(parent_absolute_name + "/quic_stream_factory");
|
| size_t memory_estimate =
|
| - base::trace_event::EstimateMemoryUsage(all_sessions_);
|
| + base::trace_event::EstimateMemoryUsage(all_sessions_) +
|
| + base::trace_event::EstimateMemoryUsage(active_sessions_) +
|
| + base::trace_event::EstimateMemoryUsage(session_aliases_) +
|
| + base::trace_event::EstimateMemoryUsage(ip_aliases_) +
|
| + base::trace_event::EstimateMemoryUsage(session_peer_ip_) +
|
| + base::trace_event::EstimateMemoryUsage(gone_away_aliases_) +
|
| + base::trace_event::EstimateMemoryUsage(active_jobs_) +
|
| + base::trace_event::EstimateMemoryUsage(job_requests_map_) +
|
| + base::trace_event::EstimateMemoryUsage(active_cert_verifier_jobs_);
|
| factory_dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
|
| base::trace_event::MemoryAllocatorDump::kUnitsBytes,
|
| memory_estimate);
|
| - factory_dump->AddScalar(
|
| - base::trace_event::MemoryAllocatorDump::kNameObjectCount,
|
| - base::trace_event::MemoryAllocatorDump::kUnitsObjects,
|
| - all_sessions_.size());
|
| + factory_dump->AddScalar("all_sessions",
|
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects,
|
| + all_sessions_.size());
|
| + factory_dump->AddScalar("active_jobs",
|
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects,
|
| + active_jobs_.size());
|
| + factory_dump->AddScalar("active_cert_jobs",
|
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects,
|
| + active_cert_verifier_jobs_.size());
|
| }
|
|
|
| bool QuicStreamFactory::CanUseExistingSession(const QuicServerId& server_id,
|
|
|