Index: base/trace_event/process_memory_totals_dump_provider.cc |
diff --git a/base/trace_event/process_memory_totals_dump_provider.cc b/base/trace_event/process_memory_totals_dump_provider.cc |
index a8617207dcfc35350496ebf7b27c8d758c891679..5f74d1efa00b42e40ebd3bdb4f6e0eb6f30ef4e1 100644 |
--- a/base/trace_event/process_memory_totals_dump_provider.cc |
+++ b/base/trace_event/process_memory_totals_dump_provider.cc |
@@ -27,26 +27,24 @@ uint64 ProcessMemoryTotalsDumpProvider::rss_bytes_for_testing = 0; |
namespace { |
-ProcessMetrics* CreateProcessMetricsForCurrentProcess() { |
+ProcessMetrics* CreateProcessMetrics(ProcessHandle process) { |
#if !defined(OS_MACOSX) || defined(OS_IOS) |
- return ProcessMetrics::CreateProcessMetrics(GetCurrentProcessHandle()); |
+ return ProcessMetrics::CreateProcessMetrics(process); |
#else |
- return ProcessMetrics::CreateProcessMetrics(GetCurrentProcessHandle(), NULL); |
+ return ProcessMetrics::CreateProcessMetrics(process, NULL); |
#endif |
} |
} // namespace |
// static |
-ProcessMemoryTotalsDumpProvider* |
-ProcessMemoryTotalsDumpProvider::GetInstance() { |
- return Singleton< |
- ProcessMemoryTotalsDumpProvider, |
- LeakySingletonTraits<ProcessMemoryTotalsDumpProvider>>::get(); |
+scoped_ptr<ProcessMemoryTotalsDumpProvider> |
+ProcessMemoryTotalsDumpProvider::CreateForProcess(ProcessHandle process) { |
+ return make_scoped_ptr(new ProcessMemoryTotalsDumpProvider(process)); |
} |
-ProcessMemoryTotalsDumpProvider::ProcessMemoryTotalsDumpProvider() |
- : process_metrics_(CreateProcessMetricsForCurrentProcess()) { |
-} |
+ProcessMemoryTotalsDumpProvider::ProcessMemoryTotalsDumpProvider( |
+ ProcessHandle process) |
+ : process_(process), process_metrics_(CreateProcessMetrics(process)) {} |
ProcessMemoryTotalsDumpProvider::~ProcessMemoryTotalsDumpProvider() { |
} |
@@ -64,9 +62,8 @@ bool ProcessMemoryTotalsDumpProvider::OnMemoryDump(const MemoryDumpArgs& args, |
#if !defined(OS_IOS) |
peak_rss_bytes = process_metrics_->GetPeakWorkingSetSize(); |
#if defined(OS_LINUX) || defined(OS_ANDROID) |
- if (kernel_supports_rss_peak_reset) { |
- // TODO(ssid): Fix crbug.com/461788 to write to the file from sandboxed |
- // processes. |
+ // This file cannot be wriiten from other processes. So, do not try. |
+ if (kernel_supports_rss_peak_reset && process_ == GetCurrentProcessHandle()) { |
int clear_refs_fd = open("/proc/self/clear_refs", O_WRONLY); |
if (clear_refs_fd > 0 && |
WriteFileDescriptor(clear_refs_fd, kClearPeakRssCommand, |