1// Copyright 2014 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// Message definition file, included multiple times, hence no include guard.
6
7#include <string>
8
9#include "ipc/ipc_message.h"
10#include "ipc/ipc_message_macros.h"
11#include "ipc/ipc_param_traits.h"
12#include "url/gurl.h"
13
14#undef IPC_MESSAGE_EXPORT
15#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
16
17#define IPC_MESSAGE_START EmbeddedWorkerMsgStart
18
19// Parameters structure for EmbeddedWorkerMsg_StartWorker.
20IPC_STRUCT_BEGIN(EmbeddedWorkerMsg_StartWorker_Params)
21  IPC_STRUCT_MEMBER(int, embedded_worker_id)
22  IPC_STRUCT_MEMBER(int64, service_worker_version_id)
23  IPC_STRUCT_MEMBER(GURL, scope)
24  IPC_STRUCT_MEMBER(GURL, script_url)
25  IPC_STRUCT_MEMBER(int, worker_devtools_agent_route_id)
26  IPC_STRUCT_MEMBER(bool, pause_after_download)
27  IPC_STRUCT_MEMBER(bool, wait_for_debugger)
28IPC_STRUCT_END()
29
30// Parameters structure for EmbeddedWorkerHostMsg_ReportConsoleMessage.
31// The data members directly correspond to parameters of
32// WorkerMessagingProxy::reportConsoleMessage()
33IPC_STRUCT_BEGIN(EmbeddedWorkerHostMsg_ReportConsoleMessage_Params)
34  IPC_STRUCT_MEMBER(int, source_identifier)
35  IPC_STRUCT_MEMBER(int, message_level)
36  IPC_STRUCT_MEMBER(base::string16, message)
37  IPC_STRUCT_MEMBER(int, line_number)
38  IPC_STRUCT_MEMBER(GURL, source_url)
39IPC_STRUCT_END()
40
41// Browser -> Renderer message to create a new embedded worker context.
42IPC_MESSAGE_CONTROL1(EmbeddedWorkerMsg_StartWorker,
43                     EmbeddedWorkerMsg_StartWorker_Params /* params */)
44
45// Browser -> Renderer message to resume a worker that has been started
46// with the pause_after_download option.
47IPC_MESSAGE_CONTROL1(EmbeddedWorkerMsg_ResumeAfterDownload,
48                     int /* embedded_worker_id */)
49
50// Browser -> Renderer message to stop (terminate) the embedded worker.
51IPC_MESSAGE_CONTROL1(EmbeddedWorkerMsg_StopWorker,
52                     int /* embedded_worker_id */)
53
54// Renderer -> Browser message to indicate that the worker script has been
55// downloaded and the embedded worker is in paused state.
56IPC_MESSAGE_CONTROL1(EmbeddedWorkerHostMsg_DidPauseAfterDownload,
57                     int /* embedded_worker_id */)
58
59// Renderer -> Browser message to indicate that the worker is ready for
60// inspection.
61IPC_MESSAGE_CONTROL1(EmbeddedWorkerHostMsg_WorkerReadyForInspection,
62                     int /* embedded_worker_id */)
63
64// Renderer -> Browser message to indicate that the worker has loadedd the
65// script.
66IPC_MESSAGE_CONTROL2(EmbeddedWorkerHostMsg_WorkerScriptLoaded,
67                     int /* embedded_worker_id */,
68                     int /* thread_id */)
69
70// Renderer -> Browser message to indicate that the worker has failed to load
71// the script.
72IPC_MESSAGE_CONTROL1(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed,
73                     int /* embedded_worker_id */)
74
75// Renderer -> Browser message to indicate that the worker is started.
76IPC_MESSAGE_CONTROL1(EmbeddedWorkerHostMsg_WorkerStarted,
77                     int /* embedded_worker_id */)
78
79// Renderer -> Browser message to indicate that the worker is stopped.
80IPC_MESSAGE_CONTROL1(EmbeddedWorkerHostMsg_WorkerStopped,
81                     int /* embedded_worker_id */)
82
83// Renderer -> Browser message to report an exception.
84IPC_MESSAGE_CONTROL5(EmbeddedWorkerHostMsg_ReportException,
85                     int /* embedded_worker_id */,
86                     base::string16 /* error_message */,
87                     int /* line_number */,
88                     int /* column_number */,
89                     GURL /* source_url */)
90
91// Renderer -> Browser message to report console message.
92IPC_MESSAGE_CONTROL2(
93    EmbeddedWorkerHostMsg_ReportConsoleMessage,
94    int /* embedded_worker_id */,
95    EmbeddedWorkerHostMsg_ReportConsoleMessage_Params /* params */)
96
97// ---------------------------------------------------------------------------
98// For EmbeddedWorkerContext related messages, which are directly sent from
99// browser to the worker thread in the child process. We use a new message class
100// for this for easier cross-thread message dispatching.
101
102#undef IPC_MESSAGE_START
103#define IPC_MESSAGE_START EmbeddedWorkerContextMsgStart
104
105// Browser -> Renderer message to send message.
106IPC_MESSAGE_CONTROL3(EmbeddedWorkerContextMsg_MessageToWorker,
107                     int /* thread_id */,
108                     int /* embedded_worker_id */,
109                     IPC::Message /* message */)
110