Chromium Code Reviews| 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_; |