Index: components/tracing/graphics_memory_dump_provider_android.h |
diff --git a/components/tracing/graphics_memory_dump_provider_android.h b/components/tracing/graphics_memory_dump_provider_android.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3a9aa656ace7a86597bee5356a61fd5070c81d3a |
--- /dev/null |
+++ b/components/tracing/graphics_memory_dump_provider_android.h |
@@ -0,0 +1,52 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef COMPONENTS_TRACING_GRAPHICS_MEMORY_DUMP_PROVIDER_ANDROID_H_ |
+#define COMPONENTS_TRACING_GRAPHICS_MEMORY_DUMP_PROVIDER_ANDROID_H_ |
+ |
+#include <string> |
+ |
+#include "base/containers/hash_tables.h" |
+#include "base/memory/singleton.h" |
+#include "base/trace_event/memory_dump_provider.h" |
+#include "components/tracing/tracing_export.h" |
+ |
+namespace tracing { |
+ |
+// Dump provider which collects memory stats about graphics memory on Android. |
+// This requires the presence of the memtrack_helper daemon, which must be |
+// executed separetely via a (root) adb shell command. The dump provider will |
+// fail (and hence disabled by the MemoryDumpManager) in absence of the helper. |
+// See the design-doc https://goo.gl/4Y30p9 for more details. |
+class TRACING_EXPORT GraphicsMemoryDumpProvider |
+ : public base::trace_event::MemoryDumpProvider { |
+ public: |
+ static GraphicsMemoryDumpProvider* GetInstance(); |
+ |
+ // MemoryDumpProvider implementation. |
+ bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
+ base::trace_event::ProcessMemoryDump* pmd) override; |
+ |
+ private: |
+ friend struct base::DefaultSingletonTraits<GraphicsMemoryDumpProvider>; |
+ |
+ void ParseResponseAndAddToDump(const char* buf, |
+ size_t length, |
+ base::trace_event::ProcessMemoryDump* pmd); |
+ |
+ GraphicsMemoryDumpProvider(); |
+ ~GraphicsMemoryDumpProvider() override; |
+ |
+ static const char kDumpBaseName[]; // Used by the unittest. |
+ |
+ // Stores key names coming from the memtrack helper in long-lived storage. |
+ // This is to allow using cheap char* strings in tracing without copies. |
+ base::hash_set<std::string> key_names_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(GraphicsMemoryDumpProvider); |
+}; |
+ |
+} // namespace tracing |
+ |
+#endif // COMPONENTS_TRACING_GRAPHICS_MEMORY_DUMP_PROVIDER_ANDROID_H_ |