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

Side by Side Diff: third_party/WebKit/Source/platform/JSONValues.cpp

Issue 1728873002: DevTools: simplify JSONValues API, prepare to the OwnPtr migration. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebaselines Created 4 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 bool JSONValue::asNumber(unsigned*) const 127 bool JSONValue::asNumber(unsigned*) const
128 { 128 {
129 return false; 129 return false;
130 } 130 }
131 131
132 bool JSONValue::asString(String*) const 132 bool JSONValue::asString(String*) const
133 { 133 {
134 return false; 134 return false;
135 } 135 }
136 136
137 bool JSONValue::asObject(RefPtr<JSONObject>*)
138 {
139 return false;
140 }
141
142 bool JSONValue::asArray(RefPtr<JSONArray>*)
143 {
144 return false;
145 }
146
147 PassRefPtr<JSONObject> JSONValue::asObject()
148 {
149 return nullptr;
150 }
151
152 PassRefPtr<JSONArray> JSONValue::asArray()
153 {
154 return nullptr;
155 }
156
157 String JSONValue::toJSONString() const 137 String JSONValue::toJSONString() const
158 { 138 {
159 StringBuilder result; 139 StringBuilder result;
160 result.reserveCapacity(512); 140 result.reserveCapacity(512);
161 writeJSON(&result); 141 writeJSON(&result);
162 return result.toString(); 142 return result.toString();
163 } 143 }
164 144
165 String JSONValue::toPrettyJSONString() const 145 String JSONValue::toPrettyJSONString() const
166 { 146 {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 *output = m_stringValue; 237 *output = m_stringValue;
258 return true; 238 return true;
259 } 239 }
260 240
261 void JSONString::writeJSON(StringBuilder* output) const 241 void JSONString::writeJSON(StringBuilder* output) const
262 { 242 {
263 ASSERT(type() == TypeString); 243 ASSERT(type() == TypeString);
264 doubleQuoteStringForJSON(m_stringValue, output); 244 doubleQuoteStringForJSON(m_stringValue, output);
265 } 245 }
266 246
267 JSONObjectBase::~JSONObjectBase() 247 JSONObject::~JSONObject()
268 { 248 {
269 } 249 }
270 250
271 bool JSONObjectBase::asObject(RefPtr<JSONObject>* output) 251 void JSONObject::setBoolean(const String& name, bool value)
272 {
273 static_assert(sizeof(JSONObject) == sizeof(JSONObjectBase), "cannot cast");
274 *output = static_cast<JSONObject*>(this);
275 return true;
276 }
277
278 PassRefPtr<JSONObject> JSONObjectBase::asObject()
279 {
280 return openAccessors();
281 }
282
283 void JSONObjectBase::setBoolean(const String& name, bool value)
284 { 252 {
285 setValue(name, JSONBasicValue::create(value)); 253 setValue(name, JSONBasicValue::create(value));
286 } 254 }
287 255
288 void JSONObjectBase::setNumber(const String& name, double value) 256 void JSONObject::setNumber(const String& name, double value)
289 { 257 {
290 setValue(name, JSONBasicValue::create(value)); 258 setValue(name, JSONBasicValue::create(value));
291 } 259 }
292 260
293 void JSONObjectBase::setString(const String& name, const String& value) 261 void JSONObject::setString(const String& name, const String& value)
294 { 262 {
295 setValue(name, JSONString::create(value)); 263 setValue(name, JSONString::create(value));
296 } 264 }
297 265
298 void JSONObjectBase::setValue(const String& name, PassRefPtr<JSONValue> value) 266 void JSONObject::setValue(const String& name, PassRefPtr<JSONValue> value)
299 { 267 {
300 ASSERT(value); 268 ASSERT(value);
301 if (m_data.set(name, value).isNewEntry) 269 if (m_data.set(name, value).isNewEntry)
302 m_order.append(name); 270 m_order.append(name);
303 } 271 }
304 272
305 void JSONObjectBase::setObject(const String& name, PassRefPtr<JSONObject> value) 273 void JSONObject::setObject(const String& name, PassRefPtr<JSONObject> value)
306 { 274 {
307 ASSERT(value); 275 ASSERT(value);
308 if (m_data.set(name, value).isNewEntry) 276 if (m_data.set(name, value).isNewEntry)
309 m_order.append(name); 277 m_order.append(name);
310 } 278 }
311 279
312 void JSONObjectBase::setArray(const String& name, PassRefPtr<JSONArray> value) 280 void JSONObject::setArray(const String& name, PassRefPtr<JSONArray> value)
313 { 281 {
314 ASSERT(value); 282 ASSERT(value);
315 if (m_data.set(name, value).isNewEntry) 283 if (m_data.set(name, value).isNewEntry)
316 m_order.append(name); 284 m_order.append(name);
317 } 285 }
318 286
319 JSONObject* JSONObjectBase::openAccessors() 287 JSONObject::iterator JSONObject::find(const String& name)
320 {
321 static_assert(sizeof(JSONObject) == sizeof(JSONObjectBase), "cannot cast");
322 return static_cast<JSONObject*>(this);
323 }
324
325 JSONObjectBase::iterator JSONObjectBase::find(const String& name)
326 { 288 {
327 return m_data.find(name); 289 return m_data.find(name);
328 } 290 }
329 291
330 JSONObjectBase::const_iterator JSONObjectBase::find(const String& name) const 292 JSONObject::const_iterator JSONObject::find(const String& name) const
331 { 293 {
332 return m_data.find(name); 294 return m_data.find(name);
333 } 295 }
334 296
335 bool JSONObjectBase::getBoolean(const String& name, bool* output) const 297 bool JSONObject::getBoolean(const String& name, bool* output) const
336 { 298 {
337 RefPtr<JSONValue> value = get(name); 299 RefPtr<JSONValue> value = get(name);
338 if (!value) 300 if (!value)
339 return false; 301 return false;
340 return value->asBoolean(output); 302 return value->asBoolean(output);
341 } 303 }
342 304
343 bool JSONObjectBase::getString(const String& name, String* output) const 305 bool JSONObject::getString(const String& name, String* output) const
344 { 306 {
345 RefPtr<JSONValue> value = get(name); 307 RefPtr<JSONValue> value = get(name);
346 if (!value) 308 if (!value)
347 return false; 309 return false;
348 return value->asString(output); 310 return value->asString(output);
349 } 311 }
350 312
351 PassRefPtr<JSONObject> JSONObjectBase::getObject(const String& name) const 313 PassRefPtr<JSONObject> JSONObject::getObject(const String& name) const
352 { 314 {
353 RefPtr<JSONValue> value = get(name); 315 return JSONObject::cast(get(name));
354 if (!value)
355 return nullptr;
356 return value->asObject();
357 } 316 }
358 317
359 PassRefPtr<JSONArray> JSONObjectBase::getArray(const String& name) const 318 PassRefPtr<JSONArray> JSONObject::getArray(const String& name) const
360 { 319 {
361 RefPtr<JSONValue> value = get(name); 320 return JSONArray::cast(get(name));
362 if (!value)
363 return nullptr;
364 return value->asArray();
365 } 321 }
366 322
367 PassRefPtr<JSONValue> JSONObjectBase::get(const String& name) const 323 PassRefPtr<JSONValue> JSONObject::get(const String& name) const
368 { 324 {
369 Dictionary::const_iterator it = m_data.find(name); 325 Dictionary::const_iterator it = m_data.find(name);
370 if (it == m_data.end()) 326 if (it == m_data.end())
371 return nullptr; 327 return nullptr;
372 return it->value; 328 return it->value;
373 } 329 }
374 330
375 bool JSONObjectBase::booleanProperty(const String& name, bool defaultValue) cons t 331 bool JSONObject::booleanProperty(const String& name, bool defaultValue) const
376 { 332 {
377 bool result = defaultValue; 333 bool result = defaultValue;
378 getBoolean(name, &result); 334 getBoolean(name, &result);
379 return result; 335 return result;
380 } 336 }
381 337
382 void JSONObjectBase::remove(const String& name) 338 void JSONObject::remove(const String& name)
383 { 339 {
384 m_data.remove(name); 340 m_data.remove(name);
385 for (size_t i = 0; i < m_order.size(); ++i) { 341 for (size_t i = 0; i < m_order.size(); ++i) {
386 if (m_order[i] == name) { 342 if (m_order[i] == name) {
387 m_order.remove(i); 343 m_order.remove(i);
388 break; 344 break;
389 } 345 }
390 } 346 }
391 } 347 }
392 348
393 void JSONObjectBase::writeJSON(StringBuilder* output) const 349 void JSONObject::writeJSON(StringBuilder* output) const
394 { 350 {
395 output->append('{'); 351 output->append('{');
396 for (size_t i = 0; i < m_order.size(); ++i) { 352 for (size_t i = 0; i < m_order.size(); ++i) {
397 Dictionary::const_iterator it = m_data.find(m_order[i]); 353 Dictionary::const_iterator it = m_data.find(m_order[i]);
398 ASSERT_WITH_SECURITY_IMPLICATION(it != m_data.end()); 354 ASSERT_WITH_SECURITY_IMPLICATION(it != m_data.end());
399 if (i) 355 if (i)
400 output->append(','); 356 output->append(',');
401 doubleQuoteStringForJSON(it->key, output); 357 doubleQuoteStringForJSON(it->key, output);
402 output->append(':'); 358 output->append(':');
403 it->value->writeJSON(output); 359 it->value->writeJSON(output);
404 } 360 }
405 output->append('}'); 361 output->append('}');
406 } 362 }
407 363
408 void JSONObjectBase::prettyWriteJSONInternal(StringBuilder* output, int depth) c onst 364 void JSONObject::prettyWriteJSONInternal(StringBuilder* output, int depth) const
409 { 365 {
410 output->appendLiteral("{\n"); 366 output->appendLiteral("{\n");
411 for (size_t i = 0; i < m_order.size(); ++i) { 367 for (size_t i = 0; i < m_order.size(); ++i) {
412 Dictionary::const_iterator it = m_data.find(m_order[i]); 368 Dictionary::const_iterator it = m_data.find(m_order[i]);
413 ASSERT_WITH_SECURITY_IMPLICATION(it != m_data.end()); 369 ASSERT_WITH_SECURITY_IMPLICATION(it != m_data.end());
414 if (i) 370 if (i)
415 output->appendLiteral(",\n"); 371 output->appendLiteral(",\n");
416 writeIndent(depth + 1, output); 372 writeIndent(depth + 1, output);
417 doubleQuoteStringForJSON(it->key, output); 373 doubleQuoteStringForJSON(it->key, output);
418 output->appendLiteral(": "); 374 output->appendLiteral(": ");
419 it->value->prettyWriteJSONInternal(output, depth + 1); 375 it->value->prettyWriteJSONInternal(output, depth + 1);
420 } 376 }
421 output->append('\n'); 377 output->append('\n');
422 writeIndent(depth, output); 378 writeIndent(depth, output);
423 output->append('}'); 379 output->append('}');
424 } 380 }
425 381
426 JSONObjectBase::JSONObjectBase() 382 JSONObject::JSONObject()
427 : JSONValue(TypeObject) 383 : JSONValue(TypeObject)
428 , m_data() 384 , m_data()
429 , m_order() 385 , m_order()
430 { 386 {
431 } 387 }
432 388
433 JSONArrayBase::~JSONArrayBase() 389 JSONArray::~JSONArray()
434 { 390 {
435 } 391 }
436 392
437 bool JSONArrayBase::asArray(RefPtr<JSONArray>* output) 393 void JSONArray::writeJSON(StringBuilder* output) const
438 {
439 static_assert(sizeof(JSONArrayBase) == sizeof(JSONArray), "cannot cast");
440 *output = static_cast<JSONArray*>(this);
441 return true;
442 }
443
444 PassRefPtr<JSONArray> JSONArrayBase::asArray()
445 {
446 static_assert(sizeof(JSONArrayBase) == sizeof(JSONArray), "cannot cast");
447 return static_cast<JSONArray*>(this);
448 }
449
450 void JSONArrayBase::writeJSON(StringBuilder* output) const
451 { 394 {
452 output->append('['); 395 output->append('[');
453 for (Vector<RefPtr<JSONValue>>::const_iterator it = m_data.begin(); it != m_ data.end(); ++it) { 396 for (Vector<RefPtr<JSONValue>>::const_iterator it = m_data.begin(); it != m_ data.end(); ++it) {
454 if (it != m_data.begin()) 397 if (it != m_data.begin())
455 output->append(','); 398 output->append(',');
456 (*it)->writeJSON(output); 399 (*it)->writeJSON(output);
457 } 400 }
458 output->append(']'); 401 output->append(']');
459 } 402 }
460 403
461 void JSONArrayBase::prettyWriteJSONInternal(StringBuilder* output, int depth) co nst 404 void JSONArray::prettyWriteJSONInternal(StringBuilder* output, int depth) const
462 { 405 {
463 output->append('['); 406 output->append('[');
464 bool lastInsertedNewLine = false; 407 bool lastInsertedNewLine = false;
465 for (Vector<RefPtr<JSONValue>>::const_iterator it = m_data.begin(); it != m_ data.end(); ++it) { 408 for (Vector<RefPtr<JSONValue>>::const_iterator it = m_data.begin(); it != m_ data.end(); ++it) {
466 bool insertNewLine = (*it)->type() == JSONValue::TypeObject || (*it)->ty pe() == JSONValue::TypeArray || (*it)->type() == JSONValue::TypeString; 409 bool insertNewLine = (*it)->type() == JSONValue::TypeObject || (*it)->ty pe() == JSONValue::TypeArray || (*it)->type() == JSONValue::TypeString;
467 if (it == m_data.begin()) { 410 if (it == m_data.begin()) {
468 if (insertNewLine) { 411 if (insertNewLine) {
469 output->append('\n'); 412 output->append('\n');
470 writeIndent(depth + 1, output); 413 writeIndent(depth + 1, output);
471 } 414 }
472 } else { 415 } else {
473 output->append(','); 416 output->append(',');
474 if (lastInsertedNewLine) { 417 if (lastInsertedNewLine) {
475 output->append('\n'); 418 output->append('\n');
476 writeIndent(depth + 1, output); 419 writeIndent(depth + 1, output);
477 } else { 420 } else {
478 output->append(' '); 421 output->append(' ');
479 } 422 }
480 } 423 }
481 (*it)->prettyWriteJSONInternal(output, depth + 1); 424 (*it)->prettyWriteJSONInternal(output, depth + 1);
482 lastInsertedNewLine = insertNewLine; 425 lastInsertedNewLine = insertNewLine;
483 } 426 }
484 if (lastInsertedNewLine) { 427 if (lastInsertedNewLine) {
485 output->append('\n'); 428 output->append('\n');
486 writeIndent(depth, output); 429 writeIndent(depth, output);
487 } 430 }
488 output->append(']'); 431 output->append(']');
489 } 432 }
490 433
491 JSONArrayBase::JSONArrayBase() 434 JSONArray::JSONArray()
492 : JSONValue(TypeArray) 435 : JSONValue(TypeArray)
493 , m_data() 436 , m_data()
494 { 437 {
495 } 438 }
496 439
497 void JSONArrayBase::pushBoolean(bool value) 440 void JSONArray::pushBoolean(bool value)
498 { 441 {
499 m_data.append(JSONBasicValue::create(value)); 442 m_data.append(JSONBasicValue::create(value));
500 } 443 }
501 444
502 void JSONArrayBase::pushInt(int value) 445 void JSONArray::pushInt(int value)
503 { 446 {
504 m_data.append(JSONBasicValue::create(value)); 447 m_data.append(JSONBasicValue::create(value));
505 } 448 }
506 449
507 void JSONArrayBase::pushNumber(double value) 450 void JSONArray::pushNumber(double value)
508 { 451 {
509 m_data.append(JSONBasicValue::create(value)); 452 m_data.append(JSONBasicValue::create(value));
510 } 453 }
511 454
512 void JSONArrayBase::pushString(const String& value) 455 void JSONArray::pushString(const String& value)
513 { 456 {
514 m_data.append(JSONString::create(value)); 457 m_data.append(JSONString::create(value));
515 } 458 }
516 459
517 void JSONArrayBase::pushValue(PassRefPtr<JSONValue> value) 460 void JSONArray::pushValue(PassRefPtr<JSONValue> value)
518 { 461 {
519 ASSERT(value); 462 ASSERT(value);
520 m_data.append(value); 463 m_data.append(value);
521 } 464 }
522 465
523 void JSONArrayBase::pushObject(PassRefPtr<JSONObject> value) 466 void JSONArray::pushObject(PassRefPtr<JSONObject> value)
524 { 467 {
525 ASSERT(value); 468 ASSERT(value);
526 m_data.append(value); 469 m_data.append(value);
527 } 470 }
528 471
529 void JSONArrayBase::pushArray(PassRefPtr<JSONArray> value) 472 void JSONArray::pushArray(PassRefPtr<JSONArray> value)
530 { 473 {
531 ASSERT(value); 474 ASSERT(value);
532 m_data.append(value); 475 m_data.append(value);
533 } 476 }
534 477
535 PassRefPtr<JSONValue> JSONArrayBase::get(size_t index) 478 PassRefPtr<JSONValue> JSONArray::get(size_t index)
536 { 479 {
537 ASSERT_WITH_SECURITY_IMPLICATION(index < m_data.size()); 480 ASSERT_WITH_SECURITY_IMPLICATION(index < m_data.size());
538 return m_data[index]; 481 return m_data[index];
539 } 482 }
540 483
541 } // namespace blink 484 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/JSONValues.h ('k') | third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698