1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
// Copyright (c) 2012 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.
// Common IPC messages used for child processes.
// Multiply-included message file, hence no include guard.
#include <string>
#include <vector>
#include "base/shared_memory.h"
#include "base/tracked_objects.h"
#include "base/values.h"
#include "content/common/content_export.h"
#include "googleurl/src/gurl.h"
#include "ipc/ipc_message_macros.h"
IPC_ENUM_TRAITS(tracked_objects::ThreadData::Status)
IPC_STRUCT_TRAITS_BEGIN(tracked_objects::LocationSnapshot)
IPC_STRUCT_TRAITS_MEMBER(file_name)
IPC_STRUCT_TRAITS_MEMBER(function_name)
IPC_STRUCT_TRAITS_MEMBER(line_number)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(tracked_objects::BirthOnThreadSnapshot)
IPC_STRUCT_TRAITS_MEMBER(location)
IPC_STRUCT_TRAITS_MEMBER(thread_name)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(tracked_objects::DeathDataSnapshot)
IPC_STRUCT_TRAITS_MEMBER(count)
IPC_STRUCT_TRAITS_MEMBER(run_duration_sum)
IPC_STRUCT_TRAITS_MEMBER(run_duration_max)
IPC_STRUCT_TRAITS_MEMBER(run_duration_sample)
IPC_STRUCT_TRAITS_MEMBER(queue_duration_sum)
IPC_STRUCT_TRAITS_MEMBER(queue_duration_max)
IPC_STRUCT_TRAITS_MEMBER(queue_duration_sample)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(tracked_objects::TaskSnapshot)
IPC_STRUCT_TRAITS_MEMBER(birth)
IPC_STRUCT_TRAITS_MEMBER(death_data)
IPC_STRUCT_TRAITS_MEMBER(death_thread_name)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(tracked_objects::ParentChildPairSnapshot)
IPC_STRUCT_TRAITS_MEMBER(parent)
IPC_STRUCT_TRAITS_MEMBER(child)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(tracked_objects::ProcessDataSnapshot)
IPC_STRUCT_TRAITS_MEMBER(tasks)
IPC_STRUCT_TRAITS_MEMBER(descendants)
IPC_STRUCT_TRAITS_MEMBER(process_id)
IPC_STRUCT_TRAITS_END()
#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
#define IPC_MESSAGE_START ChildProcessMsgStart
// Messages sent from the browser to the child process.
// Sent in response to ChildProcessHostMsg_ShutdownRequest to tell the child
// process that it's safe to shutdown.
IPC_MESSAGE_CONTROL0(ChildProcessMsg_Shutdown)
#if defined(IPC_MESSAGE_LOG_ENABLED)
// Tell the child process to begin or end IPC message logging.
IPC_MESSAGE_CONTROL1(ChildProcessMsg_SetIPCLoggingEnabled,
bool /* on or off */)
#endif
// Sent to all child processes to enable trace event recording.
IPC_MESSAGE_CONTROL2(ChildProcessMsg_BeginTracing,
std::vector<std::string> /* included_categories */,
std::vector<std::string> /* excluded_categories */)
// Sent to all child processes to disable trace event recording.
IPC_MESSAGE_CONTROL0(ChildProcessMsg_EndTracing)
// Sent to all child processes to get trace buffer fullness.
IPC_MESSAGE_CONTROL0(ChildProcessMsg_GetTraceBufferPercentFull)
// Sent to all child processes to set watch event.
IPC_MESSAGE_CONTROL2(ChildProcessMsg_SetWatchEvent,
std::string /* category_name */,
std::string /* event_name */)
// Sent to all child processes to clear watch event.
IPC_MESSAGE_CONTROL0(ChildProcessMsg_CancelWatchEvent)
// Tell the child process to enable or disable the profiler status.
IPC_MESSAGE_CONTROL1(ChildProcessMsg_SetProfilerStatus,
tracked_objects::ThreadData::Status /* profiler status */)
// Send to all the child processes to send back profiler data (ThreadData in
// tracked_objects).
IPC_MESSAGE_CONTROL1(ChildProcessMsg_GetChildProfilerData,
int /* sequence_number */)
// Send to all the child processes to send back histogram data.
IPC_MESSAGE_CONTROL1(ChildProcessMsg_GetChildHistogramData,
int /* sequence_number */)
// Sent to child processes to dump their handle table.
IPC_MESSAGE_CONTROL0(ChildProcessMsg_DumpHandles)
#if defined(USE_TCMALLOC)
// Sent to child process to request tcmalloc stats.
IPC_MESSAGE_CONTROL0(ChildProcessMsg_GetTcmallocStats)
#endif
////////////////////////////////////////////////////////////////////////////////
// Messages sent from the child process to the browser.
IPC_MESSAGE_CONTROL0(ChildProcessHostMsg_ShutdownRequest)
// Notify the browser that this child process supports tracing.
IPC_MESSAGE_CONTROL0(ChildProcessHostMsg_ChildSupportsTracing)
// Reply from child processes acking ChildProcessMsg_TraceChangeStatus(false).
IPC_MESSAGE_CONTROL1(ChildProcessHostMsg_EndTracingAck,
std::vector<std::string> /* known_categories */)
// Sent if the trace buffer becomes full.
IPC_MESSAGE_CONTROL1(ChildProcessHostMsg_TraceNotification,
int /* base::debug::TraceLog::Notification */)
// Child processes send trace data back in JSON chunks.
IPC_MESSAGE_CONTROL1(ChildProcessHostMsg_TraceDataCollected,
std::string /*json trace data*/)
// Reply to ChildProcessMsg_GetTraceBufferPercentFull.
IPC_MESSAGE_CONTROL1(ChildProcessHostMsg_TraceBufferPercentFullReply,
float /*trace buffer percent full*/)
// Send back profiler data (ThreadData in tracked_objects).
IPC_MESSAGE_CONTROL2(ChildProcessHostMsg_ChildProfilerData,
int, /* sequence_number */
tracked_objects::ProcessDataSnapshot /* profiler_data */)
// Send back histograms as vector of pickled-histogram strings.
IPC_MESSAGE_CONTROL2(ChildProcessHostMsg_ChildHistogramData,
int, /* sequence_number */
std::vector<std::string> /* histogram_data */)
// Reply to ChildProcessMsg_DumpHandles when handle table dump is complete.
IPC_MESSAGE_CONTROL0(ChildProcessHostMsg_DumpHandlesDone)
#if defined(OS_WIN)
// Request that the given font be loaded by the host so it's cached by the
// OS. Please see ChildProcessHost::PreCacheFont for details.
IPC_SYNC_MESSAGE_CONTROL1_0(ChildProcessHostMsg_PreCacheFont,
LOGFONT /* font data */)
// Release the cached font
IPC_MESSAGE_CONTROL0(ChildProcessHostMsg_ReleaseCachedFonts)
#endif // defined(OS_WIN)
// Asks the browser to create a block of shared memory for the child process to
// fill in and pass back to the browser.
IPC_SYNC_MESSAGE_CONTROL1_1(ChildProcessHostMsg_SyncAllocateSharedMemory,
uint32 /* buffer size */,
base::SharedMemoryHandle)
#if defined(USE_TCMALLOC)
// Reply to ChildProcessMsg_GetTcmallocStats.
IPC_MESSAGE_CONTROL1(ChildProcessHostMsg_TcmallocStats,
std::string /* output */)
#endif
|