Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: chrome/common/extensions/extension_messages.h

Issue 7432006: Add an experimental permissions API for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // IPC messages for extensions. 5 // IPC messages for extensions.
6 // Multiply-included message file, hence no include guard. 6 // Multiply-included message file, hence no include guard.
7 7
8 #include "base/shared_memory.h" 8 #include "base/shared_memory.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/common/extensions/extension.h" 10 #include "chrome/common/extensions/extension.h"
11 #include "chrome/common/extensions/extension_permission_set.h"
11 #include "chrome/common/extensions/url_pattern.h" 12 #include "chrome/common/extensions/url_pattern.h"
12 #include "chrome/common/extensions/url_pattern_set.h" 13 #include "chrome/common/extensions/url_pattern_set.h"
13 #include "chrome/common/web_apps.h" 14 #include "chrome/common/web_apps.h"
14 #include "content/common/view_types.h" 15 #include "content/common/view_types.h"
15 #include "ipc/ipc_message_macros.h" 16 #include "ipc/ipc_message_macros.h"
16 17
17 #define IPC_MESSAGE_START ExtensionMsgStart 18 #define IPC_MESSAGE_START ExtensionMsgStart
18 19
19 IPC_ENUM_TRAITS(ViewType::Type) 20 IPC_ENUM_TRAITS(ViewType::Type)
20 21
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 #define CHROME_COMMON_EXTENSIONS_EXTENSION_MESSAGES_H_ 84 #define CHROME_COMMON_EXTENSIONS_EXTENSION_MESSAGES_H_
84 85
85 // IPC_MESSAGE macros choke on extra , in the std::map, when expanding. We need 86 // IPC_MESSAGE macros choke on extra , in the std::map, when expanding. We need
86 // to typedef it to avoid that. 87 // to typedef it to avoid that.
87 // Substitution map for l10n messages. 88 // Substitution map for l10n messages.
88 typedef std::map<std::string, std::string> SubstitutionMap; 89 typedef std::map<std::string, std::string> SubstitutionMap;
89 90
90 struct ExtensionMsg_Loaded_Params { 91 struct ExtensionMsg_Loaded_Params {
91 ExtensionMsg_Loaded_Params(); 92 ExtensionMsg_Loaded_Params();
92 ~ExtensionMsg_Loaded_Params(); 93 ~ExtensionMsg_Loaded_Params();
93 explicit ExtensionMsg_Loaded_Params(const Extension* extension); 94 explicit ExtensionMsg_Loaded_Params(
95 const Extension* extension,
96 const ExtensionPermissionSet* active_permissions);
94 97
95 // A copy constructor is needed because this structure can end up getting 98 // A copy constructor is needed because this structure can end up getting
96 // copied inside the IPC machinery on gcc <= 4.2. 99 // copied inside the IPC machinery on gcc <= 4.2.
97 ExtensionMsg_Loaded_Params(const ExtensionMsg_Loaded_Params& other); 100 ExtensionMsg_Loaded_Params(const ExtensionMsg_Loaded_Params& other);
98 101
99 // Creates a new extension from the data in this object. 102 // Creates a new extension from the data in this object.
100 scoped_refptr<Extension> ConvertToExtension() const; 103 scoped_refptr<Extension> ConvertToExtension() const;
101 104
105 // Passes ownership to the caller.
106 const ExtensionPermissionSet* GetActivePermissions() const;
107
102 // The subset of the extension manifest data we send to renderers. 108 // The subset of the extension manifest data we send to renderers.
103 scoped_ptr<DictionaryValue> manifest; 109 scoped_ptr<DictionaryValue> manifest;
104 110
105 // The location the extension was installed from. 111 // The location the extension was installed from.
106 Extension::Location location; 112 Extension::Location location;
107 113
108 // The path the extension was loaded from. This is used in the renderer only 114 // The path the extension was loaded from. This is used in the renderer only
109 // to generate the extension ID for extensions that are loaded unpacked. 115 // to generate the extension ID for extensions that are loaded unpacked.
110 FilePath path; 116 FilePath path;
111 117
118 // The extension's current active permissions.
119 ExtensionAPIPermissionSet apis;
120 URLPatternSet explicit_hosts;
121 URLPatternSet scriptable_hosts;
122
112 // We keep this separate so that it can be used in logging. 123 // We keep this separate so that it can be used in logging.
113 std::string id; 124 std::string id;
114 }; 125 };
115 126
116 namespace IPC { 127 namespace IPC {
117 128
118 template <> 129 template <>
119 struct ParamTraits<URLPattern> { 130 struct ParamTraits<URLPattern> {
120 typedef URLPattern param_type; 131 typedef URLPattern param_type;
121 static void Write(Message* m, const param_type& p); 132 static void Write(Message* m, const param_type& p);
122 static bool Read(const Message* m, void** iter, param_type* p); 133 static bool Read(const Message* m, void** iter, param_type* p);
123 static void Log(const param_type& p, std::string* l); 134 static void Log(const param_type& p, std::string* l);
124 }; 135 };
125 136
126 template <> 137 template <>
127 struct ParamTraits<URLPatternSet> { 138 struct ParamTraits<URLPatternSet> {
128 typedef URLPatternSet param_type; 139 typedef URLPatternSet param_type;
129 static void Write(Message* m, const param_type& p); 140 static void Write(Message* m, const param_type& p);
130 static bool Read(const Message* m, void** iter, param_type* p); 141 static bool Read(const Message* m, void** iter, param_type* p);
131 static void Log(const param_type& p, std::string* l); 142 static void Log(const param_type& p, std::string* l);
132 }; 143 };
133 144
134 template <> 145 template <>
146 struct ParamTraits<ExtensionAPIPermission::ID> {
147 typedef ExtensionAPIPermission::ID param_type;
148 static void Write(Message* m, const param_type& p);
149 static bool Read(const Message* m, void** iter, param_type* p);
150 static void Log(const param_type& p, std::string* l);
151 };
152
153 template <>
135 struct ParamTraits<ExtensionMsg_Loaded_Params> { 154 struct ParamTraits<ExtensionMsg_Loaded_Params> {
136 typedef ExtensionMsg_Loaded_Params param_type; 155 typedef ExtensionMsg_Loaded_Params param_type;
137 static void Write(Message* m, const param_type& p); 156 static void Write(Message* m, const param_type& p);
138 static bool Read(const Message* m, void** iter, param_type* p); 157 static bool Read(const Message* m, void** iter, param_type* p);
139 static void Log(const param_type& p, std::string* l); 158 static void Log(const param_type& p, std::string* l);
140 }; 159 };
141 160
142 } // namespace IPC 161 } // namespace IPC
143 162
144 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_MESSAGES_H_ 163 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_MESSAGES_H_
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 223
205 // Requests application info for the page. The renderer responds back with 224 // Requests application info for the page. The renderer responds back with
206 // ExtensionHostMsg_DidGetApplicationInfo. 225 // ExtensionHostMsg_DidGetApplicationInfo.
207 IPC_MESSAGE_ROUTED1(ExtensionMsg_GetApplicationInfo, 226 IPC_MESSAGE_ROUTED1(ExtensionMsg_GetApplicationInfo,
208 int32 /*page_id*/) 227 int32 /*page_id*/)
209 228
210 // Tell the renderer which browser window it's being attached to. 229 // Tell the renderer which browser window it's being attached to.
211 IPC_MESSAGE_ROUTED1(ExtensionMsg_UpdateBrowserWindowId, 230 IPC_MESSAGE_ROUTED1(ExtensionMsg_UpdateBrowserWindowId,
212 int /* id of browser window */) 231 int /* id of browser window */)
213 232
233 // Tell the renderer to update an extension's permission set.
234 IPC_MESSAGE_CONTROL4(ExtensionMsg_UpdatePermissions,
235 std::string /* extension_id*/,
236 ExtensionAPIPermissionSet,
237 URLPatternSet,
238 URLPatternSet)
214 // Tell the renderer which type this view is. 239 // Tell the renderer which type this view is.
215 IPC_MESSAGE_ROUTED1(ExtensionMsg_NotifyRenderViewType, 240 IPC_MESSAGE_ROUTED1(ExtensionMsg_NotifyRenderViewType,
216 ViewType::Type /* view_type */) 241 ViewType::Type /* view_type */)
217 242
218 // Messages sent from the renderer to the browser. 243 // Messages sent from the renderer to the browser.
219 244
220 // A renderer sends this message when an extension process starts an API 245 // A renderer sends this message when an extension process starts an API
221 // request. The browser will always respond with a ExtensionMsg_Response. 246 // request. The browser will always respond with a ExtensionMsg_Response.
222 IPC_MESSAGE_ROUTED1(ExtensionHostMsg_Request, 247 IPC_MESSAGE_ROUTED1(ExtensionHostMsg_Request,
223 ExtensionHostMsg_Request_Params) 248 ExtensionHostMsg_Request_Params)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 bool /* whether the script ran successfully */, 306 bool /* whether the script ran successfully */,
282 std::string /* error message */) 307 std::string /* error message */)
283 308
284 IPC_MESSAGE_ROUTED2(ExtensionHostMsg_DidGetApplicationInfo, 309 IPC_MESSAGE_ROUTED2(ExtensionHostMsg_DidGetApplicationInfo,
285 int32 /* page_id */, 310 int32 /* page_id */,
286 WebApplicationInfo) 311 WebApplicationInfo)
287 312
288 // Sent by the renderer to implement chrome.app.installApplication(). 313 // Sent by the renderer to implement chrome.app.installApplication().
289 IPC_MESSAGE_ROUTED1(ExtensionHostMsg_InstallApplication, 314 IPC_MESSAGE_ROUTED1(ExtensionHostMsg_InstallApplication,
290 WebApplicationInfo) 315 WebApplicationInfo)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698