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 539141158c65706822bda710d570b374e889c5f6..30728a06a02f34b2575739df1094cbde77a5169f 100644 |
--- a/base/trace_event/memory_dump_manager.h |
+++ b/base/trace_event/memory_dump_manager.h |
@@ -81,6 +81,15 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
const MemoryDumpProvider::Options& options); |
void UnregisterDumpProvider(MemoryDumpProvider* mdp); |
+ // Unregisters an unbound dump provider and takes care about its deletion |
+ // asynchronously. Can be used only for for dump providers with no |
+ // task-runner affinity. |
+ // This method takes ownership of the dump provider and guarantees that: |
+ // - The |mdp| will be deleted at some point in the near future. |
+ // - Its deletion will not happen concurrently with the OnMemoryDump() call. |
+ // Note that OnMemoryDump() calls can still happen after this method returns. |
+ void UnregisterAndDeleteDumpProviderAsync(scoped_ptr<MemoryDumpProvider> mdp); |
+ |
// Requests a memory dump. The dump might happen or not depending on the |
// filters and categories specified when enabling tracing. |
// The optional |callback| is executed asynchronously, on an arbitrary thread, |
@@ -165,6 +174,10 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
MemoryDumpProvider* const dump_provider; |
+ // Used to transfer ownership for UnregisterAndDeleteDumpProviderAsync(). |
+ // Typically nullptr in nominal conditions. |
Ruud van Asseldonk
2015/12/29 11:32:46
/s/nominal/normal/?
Primiano Tucci (use gerrit)
2016/01/04 14:44:38
Done.
|
+ scoped_ptr<MemoryDumpProvider> owned_dump_provider; |
+ |
// Human readable name, for debugging and testing. Not necessarily unique. |
const char* const name; |
@@ -261,6 +274,10 @@ class BASE_EXPORT MemoryDumpManager : public TraceLog::EnabledStateObserver { |
void ContinueAsyncProcessDump( |
ProcessMemoryDumpAsyncState* owned_pmd_async_state); |
+ // Helper for the public UnregisterDumpProvider* functions. |
+ void UnregisterDumpProviderInternal(MemoryDumpProvider* mdp, |
+ bool take_mdp_ownership_and_delete_async); |
+ |
// An ordererd set of registered MemoryDumpProviderInfo(s), sorted by thread |
// affinity (MDPs belonging to the same thread are adjacent). |
MemoryDumpProviderInfo::OrderedSet dump_providers_; |