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