| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/metrics/subprocess_metrics_provider.h" | 5 #include "chrome/browser/metrics/subprocess_metrics_provider.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 namespace { | 23 namespace { |
| 24 | 24 |
| 25 // This is used by tests that don't have an easy way to access the global | 25 // This is used by tests that don't have an easy way to access the global |
| 26 // instance of this class. | 26 // instance of this class. |
| 27 SubprocessMetricsProvider* g_subprocess_metrics_provider_for_testing; | 27 SubprocessMetricsProvider* g_subprocess_metrics_provider_for_testing; |
| 28 | 28 |
| 29 } // namespace | 29 } // namespace |
| 30 | 30 |
| 31 SubprocessMetricsProvider::SubprocessMetricsProvider() | 31 SubprocessMetricsProvider::SubprocessMetricsProvider() |
| 32 : scoped_observer_(this), weak_ptr_factory_(this) { | 32 : scoped_observer_(this), weak_ptr_factory_(this) { |
| 33 base::StatisticsRecorder::RegisterHistogramProvider( |
| 34 weak_ptr_factory_.GetWeakPtr()); |
| 33 content::BrowserChildProcessObserver::Add(this); | 35 content::BrowserChildProcessObserver::Add(this); |
| 34 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED, | 36 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED, |
| 35 content::NotificationService::AllBrowserContextsAndSources()); | 37 content::NotificationService::AllBrowserContextsAndSources()); |
| 36 g_subprocess_metrics_provider_for_testing = this; | 38 g_subprocess_metrics_provider_for_testing = this; |
| 37 } | 39 } |
| 38 | 40 |
| 39 SubprocessMetricsProvider::~SubprocessMetricsProvider() { | 41 SubprocessMetricsProvider::~SubprocessMetricsProvider() { |
| 40 // Safe even if this object has never been added as an observer. | 42 // Safe even if this object has never been added as an observer. |
| 41 content::BrowserChildProcessObserver::Remove(this); | 43 content::BrowserChildProcessObserver::Remove(this); |
| 42 g_subprocess_metrics_provider_for_testing = nullptr; | 44 g_subprocess_metrics_provider_for_testing = nullptr; |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 return nullptr; | 217 return nullptr; |
| 216 | 218 |
| 217 std::unique_ptr<base::SharedPersistentMemoryAllocator> allocator = | 219 std::unique_ptr<base::SharedPersistentMemoryAllocator> allocator = |
| 218 host->TakeMetricsAllocator(); | 220 host->TakeMetricsAllocator(); |
| 219 if (!allocator) | 221 if (!allocator) |
| 220 return nullptr; | 222 return nullptr; |
| 221 | 223 |
| 222 return base::MakeUnique<base::PersistentHistogramAllocator>( | 224 return base::MakeUnique<base::PersistentHistogramAllocator>( |
| 223 std::move(allocator)); | 225 std::move(allocator)); |
| 224 } | 226 } |
| OLD | NEW |