1// Copyright (c) 2012 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. 4 5#ifndef CONTENT_BROWSER_PROFILER_MESSAGE_FILTER_H_ 6#define CONTENT_BROWSER_PROFILER_MESSAGE_FILTER_H_ 7 8#include <string> 9 10#include "content/public/browser/browser_message_filter.h" 11 12namespace tracked_objects { 13struct ProcessDataSnapshot; 14} 15 16namespace content { 17 18// This class sends and receives profiler messages in the browser process. 19class ProfilerMessageFilter : public BrowserMessageFilter { 20 public: 21 explicit ProfilerMessageFilter(int process_type); 22 23 // BrowserMessageFilter implementation. 24 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; 25 26 // BrowserMessageFilter implementation. 27 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 28 29 protected: 30 virtual ~ProfilerMessageFilter(); 31 32 private: 33 // Message handlers. 34 void OnChildProfilerData( 35 int sequence_number, 36 const tracked_objects::ProcessDataSnapshot& profiler_data); 37 38#if defined(USE_TCMALLOC) 39 void OnTcmallocStats(const std::string& output); 40#endif 41 42 int process_type_; 43 44 DISALLOW_COPY_AND_ASSIGN(ProfilerMessageFilter); 45}; 46 47} // namespace content 48 49#endif // CONTENT_BROWSER_PROFILER_MESSAGE_FILTER_H_ 50