1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_
6 #define BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_
8 #include "base/base_export.h"
9 #include "base/macros.h"
12 namespace trace_event
{
14 class ProcessMemoryDump
;
16 // Contains information about the type of memory dump the MemoryDumpProvider
17 // should generate on dump request. This is to control the size of dumps
19 struct MemoryDumpArgs
{
20 enum class LevelOfDetail
{
23 LAST
= HIGH
// For IPC Macros.
26 LevelOfDetail level_of_detail
;
29 // The contract interface that memory dump providers must implement.
30 class BASE_EXPORT MemoryDumpProvider
{
32 // Called by the MemoryDumpManager when generating memory dumps.
33 // The |args| specify if the embedder should generate light/heavy dumps on
34 // dump requests. The embedder should return true if the |pmd| was
35 // successfully populated, false if something went wrong and the dump should
36 // be considered invalid.
37 // (Note, the MemoryDumpManager has a fail-safe logic which will disable the
38 // MemoryDumpProvider for the entire trace session if it fails consistently).
39 virtual bool OnMemoryDump(const MemoryDumpArgs
& args
,
40 ProcessMemoryDump
* pmd
) = 0;
43 MemoryDumpProvider() {}
44 virtual ~MemoryDumpProvider() {}
46 DISALLOW_COPY_AND_ASSIGN(MemoryDumpProvider
);
49 } // namespace trace_event
52 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_