Remove APIPermission::kFileSystemWriteDirectory
[chromium-blink-merge.git] / base / trace_event / memory_dump_provider.h
blob6ab20aa1c543116896450b2bb641fc478c4e8c2a
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"
11 namespace base {
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
18 // generated.
19 struct MemoryDumpArgs {
20 enum class LevelOfDetail {
21 LOW,
22 HIGH,
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 {
31 public:
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;
42 protected:
43 MemoryDumpProvider() {}
44 virtual ~MemoryDumpProvider() {}
46 DISALLOW_COPY_AND_ASSIGN(MemoryDumpProvider);
49 } // namespace trace_event
50 } // namespace base
52 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_