12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Multiply-included message header, no traditional include guard. 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/sync_socket.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ipc/ipc_channel_handle.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ipc/ipc_message_macros.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ipc/ipc_message_utils.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ipc/ipc_platform_file.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define IPC_MESSAGE_START TracingMsgStart 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sent to all child processes to enable trace event recording. 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IPC_MESSAGE_CONTROL3(TracingMsg_BeginTracing, 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string /* category_filter_str */, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::TimeTicks /* browser_time */, 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string /* base::debug::TraceOptions */) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sent to all child processes to disable trace event recording. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingMsg_EndTracing) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Sent to all child processes to start monitoring. 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_MESSAGE_CONTROL3(TracingMsg_EnableMonitoring, 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) std::string /* category_filter_str */, 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::TimeTicks /* browser_time */, 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string /* base::debug::TraceOptions */) 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Sent to all child processes to stop monitoring. 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingMsg_DisableMonitoring) 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Sent to all child processes to capture the current monitorint snapshot. 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingMsg_CaptureMonitoringSnapshot) 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sent to all child processes to get trace buffer fullness. 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingMsg_GetTraceBufferPercentFull) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sent to all child processes to set watch event. 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL2(TracingMsg_SetWatchEvent, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string /* category_name */, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string /* event_name */) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sent to all child processes to clear watch event. 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingMsg_CancelWatchEvent) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Sent everytime when a watch event is matched. 51116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_MESSAGE_CONTROL0(TracingHostMsg_WatchEventMatched) 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Notify the browser that this child process supports tracing. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingHostMsg_ChildSupportsTracing) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Reply from child processes acking TracingMsg_EndTracing. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(TracingHostMsg_EndTracingAck, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::string> /* known_categories */) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Reply from child processes acking TracingMsg_CaptureMonitoringSnapshot. 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_MESSAGE_CONTROL0(TracingHostMsg_CaptureMonitoringSnapshotAck) 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Child processes send back trace data in JSON chunks. 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(TracingHostMsg_TraceDataCollected, 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string /*json trace data*/) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Child processes send back trace data of the current monitoring 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// in JSON chunks. 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_MESSAGE_CONTROL1(TracingHostMsg_MonitoringTraceDataCollected, 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) std::string /*json trace data*/) 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Reply to TracingMsg_GetTraceBufferPercentFull. 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(TracingHostMsg_TraceBufferPercentFullReply, 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float /*trace buffer percent full*/) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 76