Add ICU message format support
[chromium-blink-merge.git] / base / trace_event / memory_dump_provider.h
blob9fefdec5a4fd0a827017c3575b2567bd3538d612
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 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 {
27 public:
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;
38 protected:
39 MemoryDumpProvider() {}
40 virtual ~MemoryDumpProvider() {}
42 DISALLOW_COPY_AND_ASSIGN(MemoryDumpProvider);
45 } // namespace trace_event
46 } // namespace base
48 #endif // BASE_TRACE_EVENT_MEMORY_DUMP_PROVIDER_H_