190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/browser/renderer_host/memory_benchmark_message_filter.h"
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/common/memory_benchmark_messages.h"
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h"
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace content {
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)MemoryBenchmarkMessageFilter::MemoryBenchmarkMessageFilter()
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    : BrowserMessageFilter(MemoryBenchmarkMsgStart) {
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool MemoryBenchmarkMessageFilter::OnMessageReceived(
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    const IPC::Message& message) {
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  bool handled = true;
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  IPC_BEGIN_MESSAGE_MAP(MemoryBenchmarkMessageFilter, message)
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    IPC_MESSAGE_HANDLER(MemoryBenchmarkHostMsg_HeapProfilerDump,
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                        OnHeapProfilerDump)
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    IPC_MESSAGE_UNHANDLED(handled = false)
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  IPC_END_MESSAGE_MAP()
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return handled;
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)MemoryBenchmarkMessageFilter::~MemoryBenchmarkMessageFilter() {
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void MemoryBenchmarkMessageFilter::OnHeapProfilerDump(
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    const std::string& reason) {
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  ::HeapProfilerDump(reason.c_str());
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace content
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
41