1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// IPC messages for extensions.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Multiply-included message file, hence no include guard.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/shared_memory.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/common_param_traits.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/socket_permission_request.h"
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/api/messaging/message.h"
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/draggable_region.h"
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h"
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "extensions/common/extensions_client.h"
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/media_galleries_permission_data.h"
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "extensions/common/permissions/permission_set.h"
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/socket_permission_data.h"
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/usb_device_permission_data.h"
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/url_pattern.h"
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/url_pattern_set.h"
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "extensions/common/view_type.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_macros.h"
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_START ExtensionMsgStart
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(extensions::ViewType, extensions::VIEW_TYPE_LAST)
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(content::SocketPermissionRequest::OperationType,
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                          content::SocketPermissionRequest::OPERATION_TYPE_LAST)
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Parameters structure for ExtensionHostMsg_AddAPIActionToActivityLog and
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// ExtensionHostMsg_AddEventToActivityLog.
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_BEGIN(ExtensionHostMsg_APIActionOrEvent_Params)
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // API name.
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, api_call)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // List of arguments.
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  IPC_STRUCT_MEMBER(base::ListValue, arguments)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Extra logging information.
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, extra)
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_END()
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Parameters structure for ExtensionHostMsg_AddDOMActionToActivityLog.
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_BEGIN(ExtensionHostMsg_DOMAction_Params)
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // URL of the page.
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, url)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Title of the page.
54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  IPC_STRUCT_MEMBER(base::string16, url_title)
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // API name.
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, api_call)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // List of arguments.
607d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  IPC_STRUCT_MEMBER(base::ListValue, arguments)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // Type of DOM API call.
63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, call_type)
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_END()
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Parameters structure for ExtensionHostMsg_Request.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_BEGIN(ExtensionHostMsg_Request_Params)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Message name.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, name)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // List of message arguments.
727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  IPC_STRUCT_MEMBER(base::ListValue, arguments)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Extension ID this request was sent from. This can be empty, in the case
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // where we expose APIs to normal web pages using the extension function
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // system.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, extension_id)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // URL of the frame the request was sent from. This isn't necessarily an
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // extension url. Extension requests can also originate from content scripts,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // in which case extension_id will indicate the ID of the associated
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // extension. Or, they can originate from hosted apps or normal web pages.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, source_url)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // The id of the tab that sent this request, or -1 if there is no source tab.
865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, source_tab_id)
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Unique request id to match requests and responses.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, request_id)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if request has a callback specified.
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, has_callback)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if request is executed in response to an explicit user gesture.
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, user_gesture)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_END()
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Allows an extension to execute code in a tab.
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_BEGIN(ExtensionMsg_ExecuteCode_Params)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The extension API request id, for responding.
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, request_id)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The ID of the requesting extension. To know which isolated world to
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // execute the code inside of.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, extension_id)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether the code is JavaScript or CSS.
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, is_javascript)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // String of code to execute.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, code)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
113a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // The webview guest source who calls to execute code.
114a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  IPC_STRUCT_MEMBER(GURL, webview_src)
115a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether to inject into all frames, or only the root frame.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, all_frames)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Whether to inject into about:blank (sub)frames.
120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, match_about_blank)
121cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When to inject the code.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(int, run_at)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether to execute code in the main world (as opposed to an isolated
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // world).
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, in_main_world)
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Whether the request is coming from a <webview>.
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(bool, is_web_view)
131424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
132424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // Whether the caller is interested in the result value. Manifest-declared
133424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // content scripts and executeScript() calls without a response callback
134424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // are examples of when this will be false.
135424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, wants_result)
1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // The URL of the file that was injected, if any.
1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, file_url)
139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Whether the code to be executed should be associated with a user gesture.
141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, user_gesture)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_END()
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Struct containing the data for external connections to extensions. Used to
145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// handle the IPCs initiated by both connect() and onConnect().
146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_BEGIN(ExtensionMsg_ExternalConnectionInfo)
147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The ID of the extension that is the target of the request.
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, target_id)
149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The ID of the extension that initiated the request. May be empty if it
151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // wasn't initiated by an extension.
152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, source_id)
153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The URL of the frame that initiated the request.
155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, source_url)
156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_END()
157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Parameters structure for ExtensionMsg_UpdatePermissions.
159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IPC_STRUCT_BEGIN(ExtensionMsg_UpdatePermissions_Params)
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(int /* UpdateExtensionPermissionsInfo::REASON */, reason_id)
161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(std::string, extension_id)
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(extensions::APIPermissionSet, apis)
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(extensions::ManifestPermissionSet, manifest_permissions)
164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(extensions::URLPatternSet, explicit_hosts)
165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(extensions::URLPatternSet, scriptable_hosts)
166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IPC_STRUCT_END()
167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(extensions::DraggableRegion)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(draggable)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(bounds)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(content::SocketPermissionRequest)
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(type)
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(host)
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(port)
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(extensions::SocketPermissionEntry)
18068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(pattern_)
18168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(match_subdomains_)
18268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
18368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(extensions::SocketPermissionData)
18568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(entry())
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(extensions::UsbDevicePermissionData)
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(vendor_id())
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(product_id())
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(extensions::MediaGalleriesPermissionData)
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(permission())
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_TRAITS_END()
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(extensions::Message)
1981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(data)
1991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  IPC_STRUCT_TRAITS_MEMBER(user_gesture)
2001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IPC_STRUCT_TRAITS_END()
2011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Singly-included section for custom IPC traits.
203a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef EXTENSIONS_COMMON_EXTENSION_MESSAGES_H_
204a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define EXTENSIONS_COMMON_EXTENSION_MESSAGES_H_
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// IPC_MESSAGE macros choke on extra , in the std::map, when expanding. We need
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to typedef it to avoid that.
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Substitution map for l10n messages.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::map<std::string, std::string> SubstitutionMap;
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Map of extensions IDs to the executing script paths.
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::map<std::string, std::set<std::string> > ExecutingScriptsMap;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ExtensionMsg_Loaded_Params {
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExtensionMsg_Loaded_Params();
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~ExtensionMsg_Loaded_Params();
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit ExtensionMsg_Loaded_Params(const extensions::Extension* extension);
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a new extension from the data in this object.
220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_refptr<extensions::Extension> ConvertToExtension(
221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      std::string* error) const;
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The subset of the extension manifest data we send to renderers.
2247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  linked_ptr<base::DictionaryValue> manifest;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The location the extension was installed from.
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  extensions::Manifest::Location location;
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The path the extension was loaded from. This is used in the renderer only
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to generate the extension ID for extensions that are loaded unpacked.
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath path;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The extension's active permissions.
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extensions::APIPermissionSet apis;
235f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  extensions::ManifestPermissionSet manifest_permissions;
2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  extensions::URLPatternSet explicit_hosts;
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  extensions::URLPatternSet scriptable_hosts;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We keep this separate so that it can be used in logging.
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string id;
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Send creation flags so extension is initialized identically.
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int creation_flags;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace IPC {
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <>
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ParamTraits<URLPattern> {
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef URLPattern param_type;
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Write(Message* m, const param_type& p);
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool Read(const Message* m, PickleIterator* iter, param_type* p);
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Log(const param_type& p, std::string* l);
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <>
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ParamTraits<extensions::URLPatternSet> {
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef extensions::URLPatternSet param_type;
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Write(Message* m, const param_type& p);
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool Read(const Message* m, PickleIterator* iter, param_type* p);
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Log(const param_type& p, std::string* l);
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <>
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ParamTraits<extensions::APIPermission::ID> {
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef extensions::APIPermission::ID param_type;
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Write(Message* m, const param_type& p);
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool Read(const Message* m, PickleIterator* iter, param_type* p);
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Log(const param_type& p, std::string* l);
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <>
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ParamTraits<extensions::APIPermissionSet> {
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef extensions::APIPermissionSet param_type;
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Write(Message* m, const param_type& p);
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Log(const param_type& p, std::string* l);
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <>
281f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct ParamTraits<extensions::ManifestPermissionSet> {
282f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  typedef extensions::ManifestPermissionSet param_type;
283f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  static void Write(Message* m, const param_type& p);
284f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  static bool Read(const Message* m, PickleIterator* iter, param_type* r);
285f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  static void Log(const param_type& p, std::string* l);
286f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
287f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
288f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)template <>
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ParamTraits<ExtensionMsg_Loaded_Params> {
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef ExtensionMsg_Loaded_Params param_type;
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Write(Message* m, const param_type& p);
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool Read(const Message* m, PickleIterator* iter, param_type* p);
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static void Log(const param_type& p, std::string* l);
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace IPC
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
298a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif  // EXTENSIONS_COMMON_EXTENSION_MESSAGES_H_
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Messages sent from the browser to the renderer.
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The browser sends this message in response to all extension api calls. The
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// response data (if any) is one of the base::Value subclasses, wrapped as the
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// first element in a ListValue.
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED4(ExtensionMsg_Response,
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* request_id */,
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    bool /* success */,
3087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                    base::ListValue /* response wrapper (see comment above) */,
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::string /* error */)
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
311868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// This message is optionally routed.  If used as a control message, it will
312868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// call a javascript function |function_name| from module |module_name| in
313868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// every registered context in the target process.  If routed, it will be
314868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// restricted to the contexts that are part of the target RenderView.
315868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)//
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If |extension_id| is non-empty, the function will be invoked only in
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// contexts owned by the extension. |args| is a list of primitive Value types
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// that are passed to the function.
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED5(ExtensionMsg_MessageInvoke,
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::string /* extension_id */,
321868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    std::string /* module_name */,
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::string /* function_name */,
3237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                    base::ListValue /* args */,
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    bool /* delivered as part of a user gesture */)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the renderer process all known extension function names.
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_SetFunctionNames,
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::vector<std::string>)
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Tell the renderer process the platforms system font.
3317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionMsg_SetSystemFont,
3327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                     std::string /* font_family */,
3337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                     std::string /* font_size */)
3347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Marks an extension as 'active' in an extension process. 'Active' extensions
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// have more privileges than other extension content that might end up running
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in the process (e.g. because of iframes or content scripts).
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_ActivateExtension,
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */)
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notifies the renderer that extensions were loaded in the browser.
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_Loaded,
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::vector<ExtensionMsg_Loaded_Params>)
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notifies the renderer that an extension was unloaded in the browser.
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_Unloaded,
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string)
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Updates the scripting whitelist for extensions in the render process. This is
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// only used for testing.
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_SetScriptingWhitelist,
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     // extension ids
3531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                     extensions::ExtensionsClient::ScriptingWhitelist)
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notification that renderer should run some JavaScript code.
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionMsg_ExecuteCode,
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    ExtensionMsg_ExecuteCode_Params)
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notification that the user scripts have been updated. It has one
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SharedMemoryHandle argument consisting of the pickled script data. This
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// handle is valid in the context of the renderer.
362cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// If |changed_extensions| is not empty, only the extensions in that set will
363cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// be updated. Otherwise, all extensions will be updated.
364cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionMsg_UpdateUserScripts,
365cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     base::SharedMemoryHandle,
366cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     std::set<std::string> /* changed extensions */)
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the render view which browser window it's being attached to.
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionMsg_UpdateBrowserWindowId,
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* id of browser window */)
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the render view what its tab ID is.
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionMsg_SetTabId,
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* id of tab */)
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the renderer to update an extension's permission set.
377f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_UpdatePermissions,
378f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                     ExtensionMsg_UpdatePermissions_Params)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the renderer about new tab-specific permissions for an extension.
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL4(ExtensionMsg_UpdateTabSpecificPermissions,
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int32 /* page_id (only relevant for the target tab) */,
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* tab_id */,
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     extensions::URLPatternSet /* hosts */)
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the renderer to clear tab-specific permissions for some extensions.
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionMsg_ClearTabSpecificPermissions,
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* tab_id */,
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::vector<std::string> /* extension_ids */)
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tell the renderer which type this view is.
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionMsg_NotifyRenderViewType,
394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    extensions::ViewType /* view_type */)
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Deliver a message sent with ExtensionHostMsg_PostMessage.
397f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_UsingWebRequestAPI,
398f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                     bool /* webrequest_used */)
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Ask the lazy background page if it is ready to be suspended. This is sent
4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// when the page is considered idle. The renderer will reply with the same
4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// sequence_id so that we can tell which message it is responding to.
4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionMsg_ShouldSuspend,
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* sequence_id */)
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// If we complete a round of ShouldSuspend->ShouldSuspendAck messages without
4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// the lazy background page becoming active again, we are ready to unload. This
4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// message tells the page to dispatch the suspend event.
4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_Suspend,
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */)
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The browser changed its mind about suspending this extension.
4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_CancelSuspend,
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */)
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Response to the renderer for ExtensionHostMsg_GetAppInstallState.
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(ExtensionMsg_GetAppInstallStateResponse,
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::string /* state */,
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int32 /* callback_id */)
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Dispatch the Port.onConnect event for message channels.
4234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_MESSAGE_ROUTED5(ExtensionMsg_DispatchOnConnect,
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* target_port_id */,
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::string /* channel_name */,
4267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                    base::DictionaryValue /* source_tab */,
4274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    ExtensionMsg_ExternalConnectionInfo,
4284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    std::string /* tls_channel_id */)
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Deliver a message sent with ExtensionHostMsg_PostMessage.
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(ExtensionMsg_DeliverMessage,
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* target_port_id */,
4331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                    extensions::Message)
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Dispatch the Port.onDisconnect event for message channels.
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(ExtensionMsg_DispatchOnDisconnect,
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* port_id */,
4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    std::string /* error_message */)
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Informs the renderer what channel (dev, beta, stable, etc) is running.
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_SetChannel,
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* channel */)
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Adds a logging message to the renderer's root frame DevTools console.
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(ExtensionMsg_AddMessageToConsole,
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    content::ConsoleMessageLevel /* level */,
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::string /* message */)
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the renderer that its window has closed.
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED0(ExtensionMsg_AppWindowClosed)
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Notify the renderer that an extension wants notifications when certain
4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// searches match the active page.  This message replaces the old set of
4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// searches, and triggers ExtensionHostMsg_OnWatchedPageChange messages from
4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// each tab to keep the browser updated about changes.
4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_WatchPages,
4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     std::vector<std::string> /* CSS selectors */)
4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
45946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Send by the browser to indicate a Blob handle has been transferred to the
46046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// renderer. This is sent after the actual extension response, and depends on
46146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// the sequential nature of IPCs so that the blob has already been caught.
46246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// This is a separate control message, so that the renderer process will send
46346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// an acknowledgement even if the RenderView has closed or navigated away.
46446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionMsg_TransferBlobs,
46546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     std::vector<std::string> /* blob_uuids */)
46646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Messages sent from the renderer to the browser.
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A renderer sends this message when an extension process starts an API
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// request. The browser will always respond with a ExtensionMsg_Response.
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionHostMsg_Request,
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    ExtensionHostMsg_Request_Params)
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A renderer sends this message when an extension process starts an API
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// request. The browser will always respond with a ExtensionMsg_Response.
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_RequestForIOThread,
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* routing_id */,
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     ExtensionHostMsg_Request_Params)
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that the given extension added a listener to an event.
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_AddListener,
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* name */)
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that the given extension removed a listener from an
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// event.
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_RemoveListener,
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* name */)
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that the given extension added a listener to an event from
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a lazy background page.
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_AddLazyListener,
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* name */)
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that the given extension is no longer interested in
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// receiving the given event from a lazy background page.
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_RemoveLazyListener,
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* name */)
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that the given extension added a listener to instances of
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the named event that satisfy the filter.
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL4(ExtensionHostMsg_AddFilteredListener,
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* name */,
5087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                     base::DictionaryValue /* filter */,
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool /* lazy */)
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that the given extension is no longer interested in
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// instances of the named event that satisfy the filter.
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL4(ExtensionHostMsg_RemoveFilteredListener,
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* name */,
5167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                     base::DictionaryValue /* filter */,
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool /* lazy */)
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Notify the browser that an event has finished being dispatched.
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED0(ExtensionHostMsg_EventAck)
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Open a channel to all listening contexts owned by the extension with
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the given ID.  This always returns a valid port ID which can be used for
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// sending messages.  If an error occurred, the opener will be notified
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// asynchronously.
5264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)IPC_SYNC_MESSAGE_CONTROL4_1(ExtensionHostMsg_OpenChannelToExtension,
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* routing_id */,
528c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            ExtensionMsg_ExternalConnectionInfo,
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string /* channel_name */,
5304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                            bool /* include_tls_channel_id */,
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* port_id */)
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_SYNC_MESSAGE_CONTROL3_1(ExtensionHostMsg_OpenChannelToNativeApp,
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* routing_id */,
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string /* source_extension_id */,
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string /* native_app_name */,
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* port_id */)
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Get a port handle to the given tab.  The handle can be used for sending
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// messages to the extension.
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_SYNC_MESSAGE_CONTROL4_1(ExtensionHostMsg_OpenChannelToTab,
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* routing_id */,
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* tab_id */,
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string /* extension_id */,
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string /* channel_name */,
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* port_id */)
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Send a message to an extension process.  The handle is the value returned
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// by ViewHostMsg_OpenChannelTo*.
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(ExtensionHostMsg_PostMessage,
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* port_id */,
5521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                    extensions::Message)
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Send a message to an extension process.  The handle is the value returned
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// by ViewHostMsg_OpenChannelTo*.
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_CloseChannel,
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* port_id */,
5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     std::string /* error_message */)
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Used to get the extension message bundle.
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_SYNC_MESSAGE_CONTROL1_1(ExtensionHostMsg_GetMessageBundle,
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            std::string /* extension id */,
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            SubstitutionMap /* message bundle */)
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sent from the renderer to the browser to return the script running result.
566c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_ROUTED5(
567c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    ExtensionHostMsg_ExecuteCodeFinished,
568c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    int /* request id */,
569c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    std::string /* error; empty implies success */,
570c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    int32 /* page_id the code executed on.  May be -1 if unsuccessful */,
571c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    GURL /* URL of the code executed on. May be empty if unsuccessful. */,
5727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    base::ListValue /* result of the script */)
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sent from the renderer to the browser to notify that content scripts are
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// running in the renderer that the IPC originated from.
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Note that the page_id is for the parent (or more accurately the topmost)
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// frame (e.g. if executing in an iframe this is the page ID of the parent,
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// unless the parent is an iframe... etc).
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED3(ExtensionHostMsg_ContentScriptsExecuting,
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    ExecutingScriptsMap,
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int32 /* page_id of the _topmost_ frame */,
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    GURL /* url of the _topmost_ frame */)
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
584cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Sent from the renderer to the browser to request permission for a content
585cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// script to execute on a given page.
586cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// If request id is -1, this signals that the request has already ran, and this
587cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// merely serves as a notification. This happens when the feature to disable
588cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// scripts running without user consent is not enabled.
589cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IPC_MESSAGE_ROUTED3(ExtensionHostMsg_RequestContentScriptPermission,
590cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    std::string /* extension id */,
591cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    int /* page id */,
592cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    int /* request id */)
593cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
594cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Sent from the browser to the renderer in reply to a
595cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// RequestContentScriptPermission message, granting permission for a content
596cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// script to run.
597cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionMsg_GrantContentScriptPermission,
598cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                    int /* request id */)
599cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sent by the renderer when a web page is checking if its app is installed.
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED3(ExtensionHostMsg_GetAppInstallState,
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    GURL /* requestor_url */,
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int32 /* return_route_id */,
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int32 /* callback_id */)
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Optional Ack message sent to the browser to notify that the response to a
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// function has been processed.
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionHostMsg_ResponseAck,
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* request_id */)
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Response to ExtensionMsg_ShouldSuspend.
6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_ShouldSuspendAck,
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */,
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* sequence_id */)
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Response to ExtensionMsg_Suspend, after we dispatch the suspend event.
6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionHostMsg_SuspendAck,
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     std::string /* extension_id */)
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Informs the browser to increment the keepalive count for the lazy background
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// page, keeping it alive.
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED0(ExtensionHostMsg_IncrementLazyKeepaliveCount)
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Informs the browser there is one less thing keeping the lazy background page
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// alive.
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED0(ExtensionHostMsg_DecrementLazyKeepaliveCount)
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Fetches a globally unique ID (for the lifetime of the browser) from the
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// browser process.
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_SYNC_MESSAGE_CONTROL0_1(ExtensionHostMsg_GenerateUniqueID,
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int /* unique_id */)
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Resumes resource requests for a newly created app window.
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionHostMsg_ResumeRequests, int /* route_id */)
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sent by the renderer when the draggable regions are updated.
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionHostMsg_UpdateDraggableRegions,
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    std::vector<extensions::DraggableRegion> /* regions */)
6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
640c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Sent by the renderer to log an API action to the extension activity log.
641c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_AddAPIActionToActivityLog,
642c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     std::string /* extension_id */,
643c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     ExtensionHostMsg_APIActionOrEvent_Params)
644c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
645c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Sent by the renderer to log an event to the extension activity log.
646c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_AddEventToActivityLog,
647c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    std::string /* extension_id */,
648c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    ExtensionHostMsg_APIActionOrEvent_Params)
649c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
650c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Sent by the renderer to log a DOM action to the extension activity log.
6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL2(ExtensionHostMsg_AddDOMActionToActivityLog,
6522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     std::string /* extension_id */,
6532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     ExtensionHostMsg_DOMAction_Params)
6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Notifies the browser process that a tab has started or stopped matching
6562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// certain conditions.  This message is sent in response to several events:
6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//
6582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// * ExtensionMsg_WatchPages was received, updating the set of conditions.
6595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// * A new page is loaded.  This will be sent after
6605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)//   FrameHostMsg_DidCommitProvisionalLoad. Currently this only fires for the
6615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)//   main frame.
6622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// * Something changed on an existing frame causing the set of matching searches
6632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//   to change.
6642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_ROUTED1(ExtensionHostMsg_OnWatchedPageChange,
6652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    std::vector<std::string> /* Matching CSS selectors */)
66646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
66746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Sent by the renderer when it has received a Blob handle from the browser.
66846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)IPC_MESSAGE_CONTROL1(ExtensionHostMsg_TransferBlobsAck,
66946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     std::vector<std::string> /* blob_uuids */)
670