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 LevelOfDetail
{ LEVEL_OF_DETAIL_LOW
, LEVEL_OF_DETAIL_HIGH
};
22 LevelOfDetail level_of_detail
;
25 // The contract interface that memory dump providers must implement.
26 class BASE_EXPORT MemoryDumpProvider
{
28 // Called by the MemoryDumpManager when generating memory dumps.
29 // The |args| specify if the embedder should generate light/heavy dumps on
30 // dump requests. The embedder should return true if the |pmd| was
31 // successfully populated, false if something went wrong and the dump should
32 // be considered invalid.
33 // (Note, the MemoryDumpManager has a fail-safe logic which will disable the
34 // MemoryDumpProvider for the entire trace session if it fails consistently).
35 virtual bool OnMemoryDump(const MemoryDumpArgs
& args
,
36 ProcessMemoryDump
* pmd
) = 0;
39 MemoryDumpProvider() {}
40 virtual ~MemoryDumpProvider() {}
42 DISALLOW_COPY_AND_ASSIGN(MemoryDumpProvider
);
45 } // namespace trace_event
48 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_