Index: components/sessions/core/tab_restore_service_helper.cc |
diff --git a/components/sessions/core/tab_restore_service_helper.cc b/components/sessions/core/tab_restore_service_helper.cc |
index 841f07594df1dd636831b88046e525ae4c2735eb..72ed43a9317072f6962d911270537352916cb906 100644 |
--- a/components/sessions/core/tab_restore_service_helper.cc |
+++ b/components/sessions/core/tab_restore_service_helper.cc |
@@ -4,6 +4,7 @@ |
#include "components/sessions/core/tab_restore_service_helper.h" |
+#include <inttypes.h> |
#include <stddef.h> |
#include <algorithm> |
@@ -13,6 +14,10 @@ |
#include "base/memory/ptr_util.h" |
#include "base/metrics/histogram.h" |
#include "base/stl_util.h" |
+#include "base/strings/stringprintf.h" |
+#include "base/trace_event/estimate_memory_usage.h" |
+#include "base/trace_event/memory_dump_manager.h" |
+#include "base/trace_event/process_memory_dump.h" |
#include "components/sessions/core/live_tab.h" |
#include "components/sessions/core/live_tab_context.h" |
#include "components/sessions/core/serialized_navigation_entry.h" |
@@ -327,6 +332,28 @@ TabRestoreServiceHelper::GetEntryIteratorById(SessionID::id_type id) { |
return entries_.end(); |
} |
+bool TabRestoreServiceHelper::OnMemoryDump( |
+ const base::trace_event::MemoryDumpArgs& args, |
+ base::trace_event::ProcessMemoryDump* pmd) { |
+ using base::trace_event::EstimateMemoryUsage; |
+ size_t memory_usage = EstimateMemoryUsage(entries_); |
+ |
+ std::string dump_name = base::StringPrintf( |
+ "tab_restore/0x%" PRIXPTR, reinterpret_cast<uintptr_t>(this)); |
+ auto* dump = pmd->CreateAllocatorDump(dump_name); |
+ dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, |
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
+ memory_usage); |
+ const char* system_allocator_name = |
+ base::trace_event::MemoryDumpManager::GetInstance() |
+ ->system_allocator_pool_name(); |
+ if (system_allocator_name) { |
+ pmd->AddSuballocation(dump->guid(), system_allocator_name); |
+ } |
+ |
+ return true; |
+} |
+ |
// static |
bool TabRestoreServiceHelper::ValidateEntry(const Entry& entry) { |
switch (entry.type) { |