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

Unified Diff: base/trace_event/memory_dump_manager.h

Issue 1128733002: Update from https://crrev.com/328418 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/trace_event/memory_allocator_dump_unittest.cc ('k') | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/trace_event/memory_dump_manager.h
diff --git a/base/trace_event/memory_dump_manager.h b/base/trace_event/memory_dump_manager.h
index 371a47a4932a11de6efe13ed5cf2053dd6c24d09..3645ac18ba414e56f42c694e4a5507688dfc122d 100644
--- a/base/trace_event/memory_dump_manager.h
+++ b/base/trace_event/memory_dump_manager.h
@@ -17,6 +17,9 @@
#include "base/trace_event/trace_event.h"
namespace base {
+
+class SingleThreadTaskRunner;
+
namespace trace_event {
namespace {
@@ -46,6 +49,12 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver {
// MemoryDumpManager does NOT take memory ownership of |mdp|, which is
// expected to either be a singleton or unregister itself.
+ // If the optional |task_runner| argument is non-null, all the calls to the
+ // |mdp| will be issues on the given thread. Otherwise, the |mdp| should be
+ // able to handle calls on arbitrary threads.
+ void RegisterDumpProvider(
+ MemoryDumpProvider* mdp,
+ const scoped_refptr<SingleThreadTaskRunner>& task_runner);
void RegisterDumpProvider(MemoryDumpProvider* mdp);
void UnregisterDumpProvider(MemoryDumpProvider* mdp);
@@ -65,12 +74,6 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver {
void OnTraceLogEnabled() override;
void OnTraceLogDisabled() override;
- // Returns the MemoryDumpProvider which is currently being dumping into a
- // ProcessMemoryDump via DumpInto(...) if any, nullptr otherwise.
- MemoryDumpProvider* dump_provider_currently_active() const {
- return dump_provider_currently_active_;
- }
-
// Returns the MemoryDumpSessionState object, which is shared by all the
// ProcessMemoryDump and MemoryAllocatorDump instances through all the tracing
// session lifetime.
@@ -79,6 +82,17 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver {
}
private:
+ // Descriptor struct used to hold information about registered MDPs. It is
+ // deliberately copyable, in order to allow to be used as hash_map value.
+ struct MemoryDumpProviderInfo {
+ MemoryDumpProviderInfo(
+ const scoped_refptr<SingleThreadTaskRunner>& task_runner);
+ ~MemoryDumpProviderInfo();
+
+ scoped_refptr<SingleThreadTaskRunner> task_runner; // Optional.
+ bool disabled; // For fail-safe logic (auto-disable failing MDPs).
+ };
+
friend struct DefaultDeleter<MemoryDumpManager>; // For the testing instance.
friend struct DefaultSingletonTraits<MemoryDumpManager>;
friend class MemoryDumpManagerDelegate;
@@ -102,11 +116,7 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver {
MemoryDumpProvider* mdp,
scoped_refptr<ProcessMemoryDumpHolder> pmd_holder);
- hash_set<MemoryDumpProvider*> dump_providers_registered_; // Not owned.
- hash_set<MemoryDumpProvider*> dump_providers_enabled_; // Not owned.
-
- // TODO(primiano): this is required only until crbug.com/466121 gets fixed.
- MemoryDumpProvider* dump_provider_currently_active_; // Not owned.
+ hash_map<MemoryDumpProvider*, MemoryDumpProviderInfo> dump_providers_;
// Shared among all the PMDs to keep state scoped to the tracing session.
scoped_refptr<MemoryDumpSessionState> session_state_;
« no previous file with comments | « base/trace_event/memory_allocator_dump_unittest.cc ('k') | base/trace_event/memory_dump_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698