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

Side by Side Diff: ipc/ipc_message_utils.cc

Issue 2838893002: Remove base::ListValue::Set(size_t, base::Value*) (Closed)
Patch Set: Fix Compilation Error Created 3 years, 7 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 | « ipc/ipc_message_unittest.cc ('k') | tools/ipc_fuzzer/fuzzer/fuzzer.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ipc/ipc_message_utils.h" 5 #include "ipc/ipc_message_utils.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
11 #include "base/json/json_writer.h" 11 #include "base/json/json_writer.h"
12 #include "base/memory/ptr_util.h"
12 #include "base/strings/nullable_string16.h" 13 #include "base/strings/nullable_string16.h"
13 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
15 #include "base/time/time.h" 16 #include "base/time/time.h"
16 #include "base/unguessable_token.h" 17 #include "base/unguessable_token.h"
17 #include "base/values.h" 18 #include "base/values.h"
18 #include "build/build_config.h" 19 #include "build/build_config.h"
19 #include "ipc/ipc_channel_handle.h" 20 #include "ipc/ipc_channel_handle.h"
20 #include "ipc/ipc_message_attachment.h" 21 #include "ipc/ipc_message_attachment.h"
21 #include "ipc/ipc_message_attachment_set.h" 22 #include "ipc/ipc_message_attachment_set.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 if (data.size() > kMaxBytesToLog) { 65 if (data.size() > kMaxBytesToLog) {
65 out->append(base::StringPrintf( 66 out->append(base::StringPrintf(
66 " and %u more bytes", 67 " and %u more bytes",
67 static_cast<unsigned>(data.size() - kMaxBytesToLog))); 68 static_cast<unsigned>(data.size() - kMaxBytesToLog)));
68 } 69 }
69 #endif 70 #endif
70 } 71 }
71 72
72 bool ReadValue(const base::Pickle* m, 73 bool ReadValue(const base::Pickle* m,
73 base::PickleIterator* iter, 74 base::PickleIterator* iter,
74 base::Value** value, 75 std::unique_ptr<base::Value>* value,
75 int recursion); 76 int recursion);
76 77
77 void GetValueSize(base::PickleSizer* sizer, 78 void GetValueSize(base::PickleSizer* sizer,
78 const base::Value* value, 79 const base::Value* value,
79 int recursion) { 80 int recursion) {
80 if (recursion > kMaxRecursionDepth) { 81 if (recursion > kMaxRecursionDepth) {
81 LOG(ERROR) << "Max recursion depth hit in GetValueSize."; 82 LOG(ERROR) << "Max recursion depth hit in GetValueSize.";
82 return; 83 return;
83 } 84 }
84 85
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 bool ReadDictionaryValue(const base::Pickle* m, 212 bool ReadDictionaryValue(const base::Pickle* m,
212 base::PickleIterator* iter, 213 base::PickleIterator* iter,
213 base::DictionaryValue* value, 214 base::DictionaryValue* value,
214 int recursion) { 215 int recursion) {
215 int size; 216 int size;
216 if (!ReadParam(m, iter, &size)) 217 if (!ReadParam(m, iter, &size))
217 return false; 218 return false;
218 219
219 for (int i = 0; i < size; ++i) { 220 for (int i = 0; i < size; ++i) {
220 std::string key; 221 std::string key;
221 base::Value* subval; 222 std::unique_ptr<base::Value> subval;
222 if (!ReadParam(m, iter, &key) || 223 if (!ReadParam(m, iter, &key) ||
223 !ReadValue(m, iter, &subval, recursion + 1)) 224 !ReadValue(m, iter, &subval, recursion + 1))
224 return false; 225 return false;
225 value->SetWithoutPathExpansion(key, subval); 226 value->SetWithoutPathExpansion(key, std::move(subval));
226 } 227 }
227 228
228 return true; 229 return true;
229 } 230 }
230 231
231 // Helper for ReadValue that reads a ReadListValue into a pre-allocated 232 // Helper for ReadValue that reads a ReadListValue into a pre-allocated
232 // object. 233 // object.
233 bool ReadListValue(const base::Pickle* m, 234 bool ReadListValue(const base::Pickle* m,
234 base::PickleIterator* iter, 235 base::PickleIterator* iter,
235 base::ListValue* value, 236 base::ListValue* value,
236 int recursion) { 237 int recursion) {
237 int size; 238 int size;
238 if (!ReadParam(m, iter, &size)) 239 if (!ReadParam(m, iter, &size))
239 return false; 240 return false;
240 241
241 for (int i = 0; i < size; ++i) { 242 for (int i = 0; i < size; ++i) {
242 base::Value* subval; 243 std::unique_ptr<base::Value> subval;
243 if (!ReadValue(m, iter, &subval, recursion + 1)) 244 if (!ReadValue(m, iter, &subval, recursion + 1))
244 return false; 245 return false;
245 value->Set(i, subval); 246 value->Set(i, std::move(subval));
246 } 247 }
247 248
248 return true; 249 return true;
249 } 250 }
250 251
251 bool ReadValue(const base::Pickle* m, 252 bool ReadValue(const base::Pickle* m,
252 base::PickleIterator* iter, 253 base::PickleIterator* iter,
253 base::Value** value, 254 std::unique_ptr<base::Value>* value,
254 int recursion) { 255 int recursion) {
255 if (recursion > kMaxRecursionDepth) { 256 if (recursion > kMaxRecursionDepth) {
256 LOG(ERROR) << "Max recursion depth hit in ReadValue."; 257 LOG(ERROR) << "Max recursion depth hit in ReadValue.";
257 return false; 258 return false;
258 } 259 }
259 260
260 int type; 261 int type;
261 if (!ReadParam(m, iter, &type)) 262 if (!ReadParam(m, iter, &type))
262 return false; 263 return false;
263 264
264 switch (static_cast<base::Value::Type>(type)) { 265 switch (static_cast<base::Value::Type>(type)) {
265 case base::Value::Type::NONE: 266 case base::Value::Type::NONE:
266 *value = new base::Value(); 267 *value = base::MakeUnique<base::Value>();
267 break; 268 break;
268 case base::Value::Type::BOOLEAN: { 269 case base::Value::Type::BOOLEAN: {
269 bool val; 270 bool val;
270 if (!ReadParam(m, iter, &val)) 271 if (!ReadParam(m, iter, &val))
271 return false; 272 return false;
272 *value = new base::Value(val); 273 *value = base::MakeUnique<base::Value>(val);
273 break; 274 break;
274 } 275 }
275 case base::Value::Type::INTEGER: { 276 case base::Value::Type::INTEGER: {
276 int val; 277 int val;
277 if (!ReadParam(m, iter, &val)) 278 if (!ReadParam(m, iter, &val))
278 return false; 279 return false;
279 *value = new base::Value(val); 280 *value = base::MakeUnique<base::Value>(val);
280 break; 281 break;
281 } 282 }
282 case base::Value::Type::DOUBLE: { 283 case base::Value::Type::DOUBLE: {
283 double val; 284 double val;
284 if (!ReadParam(m, iter, &val)) 285 if (!ReadParam(m, iter, &val))
285 return false; 286 return false;
286 *value = new base::Value(val); 287 *value = base::MakeUnique<base::Value>(val);
287 break; 288 break;
288 } 289 }
289 case base::Value::Type::STRING: { 290 case base::Value::Type::STRING: {
290 std::string val; 291 std::string val;
291 if (!ReadParam(m, iter, &val)) 292 if (!ReadParam(m, iter, &val))
292 return false; 293 return false;
293 *value = new base::Value(val); 294 *value = base::MakeUnique<base::Value>(std::move(val));
294 break; 295 break;
295 } 296 }
296 case base::Value::Type::BINARY: { 297 case base::Value::Type::BINARY: {
297 const char* data; 298 const char* data;
298 int length; 299 int length;
299 if (!iter->ReadData(&data, &length)) 300 if (!iter->ReadData(&data, &length))
300 return false; 301 return false;
301 std::unique_ptr<base::Value> val = 302 *value = base::Value::CreateWithCopiedBuffer(data, length);
302 base::Value::CreateWithCopiedBuffer(data, length);
303 *value = val.release();
304 break; 303 break;
305 } 304 }
306 case base::Value::Type::DICTIONARY: { 305 case base::Value::Type::DICTIONARY: {
307 std::unique_ptr<base::DictionaryValue> val(new base::DictionaryValue()); 306 base::DictionaryValue val;
308 if (!ReadDictionaryValue(m, iter, val.get(), recursion)) 307 if (!ReadDictionaryValue(m, iter, &val, recursion))
309 return false; 308 return false;
310 *value = val.release(); 309 *value = base::MakeUnique<base::Value>(std::move(val));
311 break; 310 break;
312 } 311 }
313 case base::Value::Type::LIST: { 312 case base::Value::Type::LIST: {
314 std::unique_ptr<base::ListValue> val(new base::ListValue()); 313 base::ListValue val;
315 if (!ReadListValue(m, iter, val.get(), recursion)) 314 if (!ReadListValue(m, iter, &val, recursion))
316 return false; 315 return false;
317 *value = val.release(); 316 *value = base::MakeUnique<base::Value>(std::move(val));
318 break; 317 break;
319 } 318 }
320 default: 319 default:
321 return false; 320 return false;
322 } 321 }
323 322
324 return true; 323 return true;
325 } 324 }
326 325
327 } // namespace 326 } // namespace
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after
1230 return result; 1229 return result;
1231 } 1230 }
1232 1231
1233 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) { 1232 void ParamTraits<MSG>::Log(const param_type& p, std::string* l) {
1234 l->append("<MSG>"); 1233 l->append("<MSG>");
1235 } 1234 }
1236 1235
1237 #endif // OS_WIN 1236 #endif // OS_WIN
1238 1237
1239 } // namespace IPC 1238 } // namespace IPC
OLDNEW
« no previous file with comments | « ipc/ipc_message_unittest.cc ('k') | tools/ipc_fuzzer/fuzzer/fuzzer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698