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

Side by Side Diff: extensions/common/extension_messages.cc

Issue 1659003003: IPC::Message -> base::Pickle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: one more mac fix Created 4 years, 10 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
« no previous file with comments | « extensions/common/extension_messages.h ('k') | extensions/common/permissions/api_permission.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 #include "extensions/common/extension_messages.h" 5 #include "extensions/common/extension_messages.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "content/public/common/common_param_traits.h" 9 #include "content/public/common/common_param_traits.h"
10 #include "extensions/common/extension.h" 10 #include "extensions/common/extension.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 } 86 }
87 return extension; 87 return extension;
88 } 88 }
89 89
90 namespace IPC { 90 namespace IPC {
91 91
92 template <> 92 template <>
93 struct ParamTraits<Manifest::Location> { 93 struct ParamTraits<Manifest::Location> {
94 typedef Manifest::Location param_type; 94 typedef Manifest::Location param_type;
95 static void Write(Message* m, const param_type& p) { 95 static void Write(base::Pickle* m, const param_type& p) {
96 int val = static_cast<int>(p); 96 int val = static_cast<int>(p);
97 WriteParam(m, val); 97 WriteParam(m, val);
98 } 98 }
99 static bool Read(const Message* m, 99 static bool Read(const base::Pickle* m,
100 base::PickleIterator* iter, 100 base::PickleIterator* iter,
101 param_type* p) { 101 param_type* p) {
102 int val = 0; 102 int val = 0;
103 if (!ReadParam(m, iter, &val) || 103 if (!ReadParam(m, iter, &val) ||
104 val < Manifest::INVALID_LOCATION || 104 val < Manifest::INVALID_LOCATION ||
105 val >= Manifest::NUM_LOCATIONS) 105 val >= Manifest::NUM_LOCATIONS)
106 return false; 106 return false;
107 *p = static_cast<param_type>(val); 107 *p = static_cast<param_type>(val);
108 return true; 108 return true;
109 } 109 }
110 static void Log(const param_type& p, std::string* l) { 110 static void Log(const param_type& p, std::string* l) {
111 ParamTraits<int>::Log(static_cast<int>(p), l); 111 ParamTraits<int>::Log(static_cast<int>(p), l);
112 } 112 }
113 }; 113 };
114 114
115 void ParamTraits<URLPattern>::Write(Message* m, const param_type& p) { 115 void ParamTraits<URLPattern>::Write(base::Pickle* m, const param_type& p) {
116 WriteParam(m, p.valid_schemes()); 116 WriteParam(m, p.valid_schemes());
117 WriteParam(m, p.GetAsString()); 117 WriteParam(m, p.GetAsString());
118 } 118 }
119 119
120 bool ParamTraits<URLPattern>::Read(const Message* m, 120 bool ParamTraits<URLPattern>::Read(const base::Pickle* m,
121 base::PickleIterator* iter, 121 base::PickleIterator* iter,
122 param_type* p) { 122 param_type* p) {
123 int valid_schemes; 123 int valid_schemes;
124 std::string spec; 124 std::string spec;
125 if (!ReadParam(m, iter, &valid_schemes) || 125 if (!ReadParam(m, iter, &valid_schemes) ||
126 !ReadParam(m, iter, &spec)) 126 !ReadParam(m, iter, &spec))
127 return false; 127 return false;
128 128
129 // TODO(jstritar): We don't want the URLPattern to fail parsing when the 129 // TODO(jstritar): We don't want the URLPattern to fail parsing when the
130 // scheme is invalid. Instead, the pattern should parse but it should not 130 // scheme is invalid. Instead, the pattern should parse but it should not
131 // match the invalid patterns. We get around this by setting the valid 131 // match the invalid patterns. We get around this by setting the valid
132 // schemes after parsing the pattern. Update these method calls once we can 132 // schemes after parsing the pattern. Update these method calls once we can
133 // ignore scheme validation with URLPattern parse options. crbug.com/90544 133 // ignore scheme validation with URLPattern parse options. crbug.com/90544
134 p->SetValidSchemes(URLPattern::SCHEME_ALL); 134 p->SetValidSchemes(URLPattern::SCHEME_ALL);
135 URLPattern::ParseResult result = p->Parse(spec); 135 URLPattern::ParseResult result = p->Parse(spec);
136 p->SetValidSchemes(valid_schemes); 136 p->SetValidSchemes(valid_schemes);
137 return URLPattern::PARSE_SUCCESS == result; 137 return URLPattern::PARSE_SUCCESS == result;
138 } 138 }
139 139
140 void ParamTraits<URLPattern>::Log(const param_type& p, std::string* l) { 140 void ParamTraits<URLPattern>::Log(const param_type& p, std::string* l) {
141 LogParam(p.GetAsString(), l); 141 LogParam(p.GetAsString(), l);
142 } 142 }
143 143
144 void ParamTraits<URLPatternSet>::Write(Message* m, const param_type& p) { 144 void ParamTraits<URLPatternSet>::Write(base::Pickle* m, const param_type& p) {
145 WriteParam(m, p.patterns()); 145 WriteParam(m, p.patterns());
146 } 146 }
147 147
148 bool ParamTraits<URLPatternSet>::Read(const Message* m, 148 bool ParamTraits<URLPatternSet>::Read(const base::Pickle* m,
149 base::PickleIterator* iter, 149 base::PickleIterator* iter,
150 param_type* p) { 150 param_type* p) {
151 std::set<URLPattern> patterns; 151 std::set<URLPattern> patterns;
152 if (!ReadParam(m, iter, &patterns)) 152 if (!ReadParam(m, iter, &patterns))
153 return false; 153 return false;
154 154
155 for (std::set<URLPattern>::iterator i = patterns.begin(); 155 for (std::set<URLPattern>::iterator i = patterns.begin();
156 i != patterns.end(); ++i) 156 i != patterns.end(); ++i)
157 p->AddPattern(*i); 157 p->AddPattern(*i);
158 return true; 158 return true;
159 } 159 }
160 160
161 void ParamTraits<URLPatternSet>::Log(const param_type& p, std::string* l) { 161 void ParamTraits<URLPatternSet>::Log(const param_type& p, std::string* l) {
162 LogParam(p.patterns(), l); 162 LogParam(p.patterns(), l);
163 } 163 }
164 164
165 void ParamTraits<APIPermission::ID>::Write( 165 void ParamTraits<APIPermission::ID>::Write(base::Pickle* m,
166 Message* m, const param_type& p) { 166 const param_type& p) {
167 WriteParam(m, static_cast<int>(p)); 167 WriteParam(m, static_cast<int>(p));
168 } 168 }
169 169
170 bool ParamTraits<APIPermission::ID>::Read(const Message* m, 170 bool ParamTraits<APIPermission::ID>::Read(const base::Pickle* m,
171 base::PickleIterator* iter, 171 base::PickleIterator* iter,
172 param_type* p) { 172 param_type* p) {
173 int api_id = -2; 173 int api_id = -2;
174 if (!ReadParam(m, iter, &api_id)) 174 if (!ReadParam(m, iter, &api_id))
175 return false; 175 return false;
176 176
177 *p = static_cast<APIPermission::ID>(api_id); 177 *p = static_cast<APIPermission::ID>(api_id);
178 return true; 178 return true;
179 } 179 }
180 180
181 void ParamTraits<APIPermission::ID>::Log( 181 void ParamTraits<APIPermission::ID>::Log(
182 const param_type& p, std::string* l) { 182 const param_type& p, std::string* l) {
183 LogParam(static_cast<int>(p), l); 183 LogParam(static_cast<int>(p), l);
184 } 184 }
185 185
186 void ParamTraits<APIPermissionSet>::Write( 186 void ParamTraits<APIPermissionSet>::Write(base::Pickle* m,
187 Message* m, const param_type& p) { 187 const param_type& p) {
188 APIPermissionSet::const_iterator it = p.begin(); 188 APIPermissionSet::const_iterator it = p.begin();
189 const APIPermissionSet::const_iterator end = p.end(); 189 const APIPermissionSet::const_iterator end = p.end();
190 WriteParam(m, p.size()); 190 WriteParam(m, p.size());
191 for (; it != end; ++it) { 191 for (; it != end; ++it) {
192 WriteParam(m, it->id()); 192 WriteParam(m, it->id());
193 it->Write(m); 193 it->Write(m);
194 } 194 }
195 } 195 }
196 196
197 bool ParamTraits<APIPermissionSet>::Read(const Message* m, 197 bool ParamTraits<APIPermissionSet>::Read(const base::Pickle* m,
198 base::PickleIterator* iter, 198 base::PickleIterator* iter,
199 param_type* r) { 199 param_type* r) {
200 size_t size; 200 size_t size;
201 if (!ReadParam(m, iter, &size)) 201 if (!ReadParam(m, iter, &size))
202 return false; 202 return false;
203 for (size_t i = 0; i < size; ++i) { 203 for (size_t i = 0; i < size; ++i) {
204 APIPermission::ID id; 204 APIPermission::ID id;
205 if (!ReadParam(m, iter, &id)) 205 if (!ReadParam(m, iter, &id))
206 return false; 206 return false;
207 const APIPermissionInfo* permission_info = 207 const APIPermissionInfo* permission_info =
208 extensions::PermissionsInfo::GetInstance()->GetByID(id); 208 extensions::PermissionsInfo::GetInstance()->GetByID(id);
209 if (!permission_info) 209 if (!permission_info)
210 return false; 210 return false;
211 scoped_ptr<APIPermission> p(permission_info->CreateAPIPermission()); 211 scoped_ptr<APIPermission> p(permission_info->CreateAPIPermission());
212 if (!p->Read(m, iter)) 212 if (!p->Read(m, iter))
213 return false; 213 return false;
214 r->insert(p.release()); 214 r->insert(p.release());
215 } 215 }
216 return true; 216 return true;
217 } 217 }
218 218
219 void ParamTraits<APIPermissionSet>::Log( 219 void ParamTraits<APIPermissionSet>::Log(
220 const param_type& p, std::string* l) { 220 const param_type& p, std::string* l) {
221 LogParam(p.map(), l); 221 LogParam(p.map(), l);
222 } 222 }
223 223
224 void ParamTraits<ManifestPermissionSet>::Write( 224 void ParamTraits<ManifestPermissionSet>::Write(base::Pickle* m,
225 Message* m, const param_type& p) { 225 const param_type& p) {
226 ManifestPermissionSet::const_iterator it = p.begin(); 226 ManifestPermissionSet::const_iterator it = p.begin();
227 const ManifestPermissionSet::const_iterator end = p.end(); 227 const ManifestPermissionSet::const_iterator end = p.end();
228 WriteParam(m, p.size()); 228 WriteParam(m, p.size());
229 for (; it != end; ++it) { 229 for (; it != end; ++it) {
230 WriteParam(m, it->name()); 230 WriteParam(m, it->name());
231 it->Write(m); 231 it->Write(m);
232 } 232 }
233 } 233 }
234 234
235 bool ParamTraits<ManifestPermissionSet>::Read(const Message* m, 235 bool ParamTraits<ManifestPermissionSet>::Read(const base::Pickle* m,
236 base::PickleIterator* iter, 236 base::PickleIterator* iter,
237 param_type* r) { 237 param_type* r) {
238 size_t size; 238 size_t size;
239 if (!ReadParam(m, iter, &size)) 239 if (!ReadParam(m, iter, &size))
240 return false; 240 return false;
241 for (size_t i = 0; i < size; ++i) { 241 for (size_t i = 0; i < size; ++i) {
242 std::string name; 242 std::string name;
243 if (!ReadParam(m, iter, &name)) 243 if (!ReadParam(m, iter, &name))
244 return false; 244 return false;
245 scoped_ptr<ManifestPermission> p(ManifestHandler::CreatePermission(name)); 245 scoped_ptr<ManifestPermission> p(ManifestHandler::CreatePermission(name));
246 if (!p) 246 if (!p)
247 return false; 247 return false;
248 if (!p->Read(m, iter)) 248 if (!p->Read(m, iter))
249 return false; 249 return false;
250 r->insert(p.release()); 250 r->insert(p.release());
251 } 251 }
252 return true; 252 return true;
253 } 253 }
254 254
255 void ParamTraits<ManifestPermissionSet>::Log( 255 void ParamTraits<ManifestPermissionSet>::Log(
256 const param_type& p, std::string* l) { 256 const param_type& p, std::string* l) {
257 LogParam(p.map(), l); 257 LogParam(p.map(), l);
258 } 258 }
259 259
260 void ParamTraits<HostID>::Write( 260 void ParamTraits<HostID>::Write(base::Pickle* m, const param_type& p) {
261 Message* m, const param_type& p) {
262 WriteParam(m, p.type()); 261 WriteParam(m, p.type());
263 WriteParam(m, p.id()); 262 WriteParam(m, p.id());
264 } 263 }
265 264
266 bool ParamTraits<HostID>::Read(const Message* m, 265 bool ParamTraits<HostID>::Read(const base::Pickle* m,
267 base::PickleIterator* iter, 266 base::PickleIterator* iter,
268 param_type* r) { 267 param_type* r) {
269 HostID::HostType type; 268 HostID::HostType type;
270 std::string id; 269 std::string id;
271 if (!ReadParam(m, iter, &type)) 270 if (!ReadParam(m, iter, &type))
272 return false; 271 return false;
273 if (!ReadParam(m, iter, &id)) 272 if (!ReadParam(m, iter, &id))
274 return false; 273 return false;
275 *r = HostID(type, id); 274 *r = HostID(type, id);
276 return true; 275 return true;
277 } 276 }
278 277
279 void ParamTraits<HostID>::Log( 278 void ParamTraits<HostID>::Log(
280 const param_type& p, std::string* l) { 279 const param_type& p, std::string* l) {
281 LogParam(p.type(), l); 280 LogParam(p.type(), l);
282 LogParam(p.id(), l); 281 LogParam(p.id(), l);
283 } 282 }
284 283
285 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(Message* m, 284 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(base::Pickle* m,
286 const param_type& p) { 285 const param_type& p) {
287 WriteParam(m, p.apis); 286 WriteParam(m, p.apis);
288 WriteParam(m, p.manifest_permissions); 287 WriteParam(m, p.manifest_permissions);
289 WriteParam(m, p.explicit_hosts); 288 WriteParam(m, p.explicit_hosts);
290 WriteParam(m, p.scriptable_hosts); 289 WriteParam(m, p.scriptable_hosts);
291 } 290 }
292 291
293 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read( 292 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read(
294 const Message* m, 293 const base::Pickle* m,
295 base::PickleIterator* iter, 294 base::PickleIterator* iter,
296 param_type* p) { 295 param_type* p) {
297 return ReadParam(m, iter, &p->apis) && 296 return ReadParam(m, iter, &p->apis) &&
298 ReadParam(m, iter, &p->manifest_permissions) && 297 ReadParam(m, iter, &p->manifest_permissions) &&
299 ReadParam(m, iter, &p->explicit_hosts) && 298 ReadParam(m, iter, &p->explicit_hosts) &&
300 ReadParam(m, iter, &p->scriptable_hosts); 299 ReadParam(m, iter, &p->scriptable_hosts);
301 } 300 }
302 301
303 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Log(const param_type& p, 302 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Log(const param_type& p,
304 std::string* l) { 303 std::string* l) {
305 LogParam(p.apis, l); 304 LogParam(p.apis, l);
306 LogParam(p.manifest_permissions, l); 305 LogParam(p.manifest_permissions, l);
307 LogParam(p.explicit_hosts, l); 306 LogParam(p.explicit_hosts, l);
308 LogParam(p.scriptable_hosts, l); 307 LogParam(p.scriptable_hosts, l);
309 } 308 }
310 309
311 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(Message* m, 310 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(base::Pickle* m,
312 const param_type& p) { 311 const param_type& p) {
313 WriteParam(m, p.location); 312 WriteParam(m, p.location);
314 WriteParam(m, p.path); 313 WriteParam(m, p.path);
315 WriteParam(m, *(p.manifest)); 314 WriteParam(m, *(p.manifest));
316 WriteParam(m, p.creation_flags); 315 WriteParam(m, p.creation_flags);
317 WriteParam(m, p.active_permissions); 316 WriteParam(m, p.active_permissions);
318 WriteParam(m, p.withheld_permissions); 317 WriteParam(m, p.withheld_permissions);
319 } 318 }
320 319
321 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const Message* m, 320 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const base::Pickle* m,
322 base::PickleIterator* iter, 321 base::PickleIterator* iter,
323 param_type* p) { 322 param_type* p) {
324 p->manifest.reset(new base::DictionaryValue()); 323 p->manifest.reset(new base::DictionaryValue());
325 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) && 324 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) &&
326 ReadParam(m, iter, p->manifest.get()) && 325 ReadParam(m, iter, p->manifest.get()) &&
327 ReadParam(m, iter, &p->creation_flags) && 326 ReadParam(m, iter, &p->creation_flags) &&
328 ReadParam(m, iter, &p->active_permissions) && 327 ReadParam(m, iter, &p->active_permissions) &&
329 ReadParam(m, iter, &p->withheld_permissions); 328 ReadParam(m, iter, &p->withheld_permissions);
330 } 329 }
331 330
332 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, 331 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p,
333 std::string* l) { 332 std::string* l) {
334 l->append(p.id); 333 l->append(p.id);
335 } 334 }
336 335
337 } // namespace IPC 336 } // namespace IPC
OLDNEW
« no previous file with comments | « extensions/common/extension_messages.h ('k') | extensions/common/permissions/api_permission.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698