| OLD | NEW |
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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 "platform/inspector_protocol/Parser.h" | 5 #include "platform/inspector_protocol/Parser.h" |
| 6 | 6 |
| 7 #include "platform/inspector_protocol/Values.h" | 7 #include "platform/inspector_protocol/Values.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "wtf/text/StringBuilder.h" | 9 #include "wtf/text/StringBuilder.h" |
| 10 | 10 |
| 11 namespace blink { | 11 namespace blink { |
| 12 namespace protocol { | 12 namespace protocol { |
| 13 | 13 |
| 14 TEST(ParserTest, Reading) | 14 TEST(ParserTest, Reading) |
| 15 { | 15 { |
| 16 RefPtr<protocol::Value> tmpValue; | 16 protocol::Value* tmpValue; |
| 17 RefPtr<protocol::Value> root; | 17 OwnPtr<protocol::Value> root; |
| 18 RefPtr<protocol::Value> root2; | 18 OwnPtr<protocol::Value> root2; |
| 19 String strVal; | 19 String strVal; |
| 20 int intVal = 0; | 20 int intVal = 0; |
| 21 | 21 |
| 22 // some whitespace checking | 22 // some whitespace checking |
| 23 root = parseJSON(" null "); | 23 root = parseJSON(" null "); |
| 24 ASSERT_TRUE(root.get()); | 24 ASSERT_TRUE(root.get()); |
| 25 EXPECT_EQ(Value::TypeNull, root->type()); | 25 EXPECT_EQ(Value::TypeNull, root->type()); |
| 26 | 26 |
| 27 // Invalid JSON string | 27 // Invalid JSON string |
| 28 root = parseJSON("nu"); | 28 root = parseJSON("nu"); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 51 EXPECT_EQ(40, intVal); | 51 EXPECT_EQ(40, intVal); |
| 52 root = parseJSON("true // comment"); | 52 root = parseJSON("true // comment"); |
| 53 ASSERT_TRUE(root.get()); | 53 ASSERT_TRUE(root.get()); |
| 54 EXPECT_EQ(Value::TypeBoolean, root->type()); | 54 EXPECT_EQ(Value::TypeBoolean, root->type()); |
| 55 root = parseJSON("/* comment */\"sample string\""); | 55 root = parseJSON("/* comment */\"sample string\""); |
| 56 ASSERT_TRUE(root.get()); | 56 ASSERT_TRUE(root.get()); |
| 57 EXPECT_TRUE(root->asString(&strVal)); | 57 EXPECT_TRUE(root->asString(&strVal)); |
| 58 EXPECT_EQ("sample string", strVal); | 58 EXPECT_EQ("sample string", strVal); |
| 59 root = parseJSON("[1, /* comment, 2 ] */ \n 3]"); | 59 root = parseJSON("[1, /* comment, 2 ] */ \n 3]"); |
| 60 ASSERT_TRUE(root.get()); | 60 ASSERT_TRUE(root.get()); |
| 61 RefPtr<protocol::ListValue> list = ListValue::cast(root); | 61 protocol::ListValue* list = ListValue::cast(root.get()); |
| 62 ASSERT_TRUE(list); | 62 ASSERT_TRUE(list); |
| 63 EXPECT_EQ(2u, list->length()); | 63 EXPECT_EQ(2u, list->length()); |
| 64 tmpValue = list->get(0); | 64 tmpValue = list->get(0); |
| 65 ASSERT_TRUE(tmpValue.get()); | 65 ASSERT_TRUE(tmpValue); |
| 66 EXPECT_TRUE(tmpValue->asNumber(&intVal)); | 66 EXPECT_TRUE(tmpValue->asNumber(&intVal)); |
| 67 EXPECT_EQ(1, intVal); | 67 EXPECT_EQ(1, intVal); |
| 68 tmpValue = list->get(1); | 68 tmpValue = list->get(1); |
| 69 ASSERT_TRUE(tmpValue.get()); | 69 ASSERT_TRUE(tmpValue); |
| 70 EXPECT_TRUE(tmpValue->asNumber(&intVal)); | 70 EXPECT_TRUE(tmpValue->asNumber(&intVal)); |
| 71 EXPECT_EQ(3, intVal); | 71 EXPECT_EQ(3, intVal); |
| 72 root = parseJSON("[1, /*a*/2, 3]"); | 72 root = parseJSON("[1, /*a*/2, 3]"); |
| 73 ASSERT_TRUE(root.get()); | 73 ASSERT_TRUE(root.get()); |
| 74 list = ListValue::cast(root); | 74 list = ListValue::cast(root.get()); |
| 75 ASSERT_TRUE(list); | 75 ASSERT_TRUE(list); |
| 76 EXPECT_EQ(3u, list->length()); | 76 EXPECT_EQ(3u, list->length()); |
| 77 root = parseJSON("/* comment **/42"); | 77 root = parseJSON("/* comment **/42"); |
| 78 ASSERT_TRUE(root.get()); | 78 ASSERT_TRUE(root.get()); |
| 79 EXPECT_EQ(Value::TypeNumber, root->type()); | 79 EXPECT_EQ(Value::TypeNumber, root->type()); |
| 80 EXPECT_TRUE(root->asNumber(&intVal)); | 80 EXPECT_TRUE(root->asNumber(&intVal)); |
| 81 EXPECT_EQ(42, intVal); | 81 EXPECT_EQ(42, intVal); |
| 82 root = parseJSON( | 82 root = parseJSON( |
| 83 "/* comment **/\n" | 83 "/* comment **/\n" |
| 84 "// */ 43\n" | 84 "// */ 43\n" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 EXPECT_FALSE(root.get()); | 247 EXPECT_FALSE(root.get()); |
| 248 root = parseJSON("\"not enough escape chars\\u123\""); | 248 root = parseJSON("\"not enough escape chars\\u123\""); |
| 249 EXPECT_FALSE(root.get()); | 249 EXPECT_FALSE(root.get()); |
| 250 root = parseJSON("\"extra backslash at end of input\\\""); | 250 root = parseJSON("\"extra backslash at end of input\\\""); |
| 251 EXPECT_FALSE(root.get()); | 251 EXPECT_FALSE(root.get()); |
| 252 | 252 |
| 253 // Basic array | 253 // Basic array |
| 254 root = parseJSON("[true, false, null]"); | 254 root = parseJSON("[true, false, null]"); |
| 255 ASSERT_TRUE(root.get()); | 255 ASSERT_TRUE(root.get()); |
| 256 EXPECT_EQ(Value::TypeArray, root->type()); | 256 EXPECT_EQ(Value::TypeArray, root->type()); |
| 257 list = ListValue::cast(root); | 257 list = ListValue::cast(root.get()); |
| 258 ASSERT_TRUE(list); | 258 ASSERT_TRUE(list); |
| 259 EXPECT_EQ(3U, list->length()); | 259 EXPECT_EQ(3U, list->length()); |
| 260 | 260 |
| 261 // Empty array | 261 // Empty array |
| 262 root = parseJSON("[]"); | 262 root = parseJSON("[]"); |
| 263 ASSERT_TRUE(root.get()); | 263 ASSERT_TRUE(root.get()); |
| 264 EXPECT_EQ(Value::TypeArray, root->type()); | 264 EXPECT_EQ(Value::TypeArray, root->type()); |
| 265 list = ListValue::cast(root); | 265 list = ListValue::cast(root.get()); |
| 266 ASSERT_TRUE(list); | 266 ASSERT_TRUE(list); |
| 267 EXPECT_EQ(0U, list->length()); | 267 EXPECT_EQ(0U, list->length()); |
| 268 | 268 |
| 269 // Nested arrays | 269 // Nested arrays |
| 270 root = parseJSON("[[true], [], [false, [], [null]], null]"); | 270 root = parseJSON("[[true], [], [false, [], [null]], null]"); |
| 271 ASSERT_TRUE(root.get()); | 271 ASSERT_TRUE(root.get()); |
| 272 EXPECT_EQ(Value::TypeArray, root->type()); | 272 EXPECT_EQ(Value::TypeArray, root->type()); |
| 273 list = ListValue::cast(root); | 273 list = ListValue::cast(root.get()); |
| 274 ASSERT_TRUE(list); | 274 ASSERT_TRUE(list); |
| 275 EXPECT_EQ(4U, list->length()); | 275 EXPECT_EQ(4U, list->length()); |
| 276 | 276 |
| 277 // Invalid, missing close brace. | 277 // Invalid, missing close brace. |
| 278 root = parseJSON("[[true], [], [false, [], [null]], null"); | 278 root = parseJSON("[[true], [], [false, [], [null]], null"); |
| 279 EXPECT_FALSE(root.get()); | 279 EXPECT_FALSE(root.get()); |
| 280 | 280 |
| 281 // Invalid, too many commas | 281 // Invalid, too many commas |
| 282 root = parseJSON("[true,, null]"); | 282 root = parseJSON("[true,, null]"); |
| 283 EXPECT_FALSE(root.get()); | 283 EXPECT_FALSE(root.get()); |
| 284 | 284 |
| 285 // Invalid, no commas | 285 // Invalid, no commas |
| 286 root = parseJSON("[true null]"); | 286 root = parseJSON("[true null]"); |
| 287 EXPECT_FALSE(root.get()); | 287 EXPECT_FALSE(root.get()); |
| 288 | 288 |
| 289 // Invalid, trailing comma | 289 // Invalid, trailing comma |
| 290 root = parseJSON("[true,]"); | 290 root = parseJSON("[true,]"); |
| 291 EXPECT_FALSE(root.get()); | 291 EXPECT_FALSE(root.get()); |
| 292 | 292 |
| 293 root = parseJSON("[true]"); | 293 root = parseJSON("[true]"); |
| 294 ASSERT_TRUE(root.get()); | 294 ASSERT_TRUE(root.get()); |
| 295 EXPECT_EQ(Value::TypeArray, root->type()); | 295 EXPECT_EQ(Value::TypeArray, root->type()); |
| 296 list = ListValue::cast(root); | 296 list = ListValue::cast(root.get()); |
| 297 ASSERT_TRUE(list); | 297 ASSERT_TRUE(list); |
| 298 EXPECT_EQ(1U, list->length()); | 298 EXPECT_EQ(1U, list->length()); |
| 299 tmpValue = list->get(0); | 299 tmpValue = list->get(0); |
| 300 ASSERT_TRUE(tmpValue.get()); | 300 ASSERT_TRUE(tmpValue); |
| 301 EXPECT_EQ(Value::TypeBoolean, tmpValue->type()); | 301 EXPECT_EQ(Value::TypeBoolean, tmpValue->type()); |
| 302 bool boolValue = false; | 302 bool boolValue = false; |
| 303 EXPECT_TRUE(tmpValue->asBoolean(&boolValue)); | 303 EXPECT_TRUE(tmpValue->asBoolean(&boolValue)); |
| 304 EXPECT_TRUE(boolValue); | 304 EXPECT_TRUE(boolValue); |
| 305 | 305 |
| 306 // Don't allow empty elements. | 306 // Don't allow empty elements. |
| 307 root = parseJSON("[,]"); | 307 root = parseJSON("[,]"); |
| 308 EXPECT_FALSE(root.get()); | 308 EXPECT_FALSE(root.get()); |
| 309 root = parseJSON("[true,,]"); | 309 root = parseJSON("[true,,]"); |
| 310 EXPECT_FALSE(root.get()); | 310 EXPECT_FALSE(root.get()); |
| 311 root = parseJSON("[,true,]"); | 311 root = parseJSON("[,true,]"); |
| 312 EXPECT_FALSE(root.get()); | 312 EXPECT_FALSE(root.get()); |
| 313 root = parseJSON("[true,,false]"); | 313 root = parseJSON("[true,,false]"); |
| 314 EXPECT_FALSE(root.get()); | 314 EXPECT_FALSE(root.get()); |
| 315 | 315 |
| 316 // Test objects | 316 // Test objects |
| 317 root = parseJSON("{}"); | 317 root = parseJSON("{}"); |
| 318 ASSERT_TRUE(root.get()); | 318 ASSERT_TRUE(root.get()); |
| 319 EXPECT_EQ(Value::TypeObject, root->type()); | 319 EXPECT_EQ(Value::TypeObject, root->type()); |
| 320 | 320 |
| 321 root = parseJSON("{\"number\":9.87654321, \"null\":null , \"\\x53\" : \"str\
" }"); | 321 root = parseJSON("{\"number\":9.87654321, \"null\":null , \"\\x53\" : \"str\
" }"); |
| 322 ASSERT_TRUE(root.get()); | 322 ASSERT_TRUE(root.get()); |
| 323 EXPECT_EQ(Value::TypeObject, root->type()); | 323 EXPECT_EQ(Value::TypeObject, root->type()); |
| 324 RefPtr<protocol::DictionaryValue> objectVal = DictionaryValue::cast(root); | 324 protocol::DictionaryValue* objectVal = DictionaryValue::cast(root.get()); |
| 325 ASSERT_TRUE(objectVal); | 325 ASSERT_TRUE(objectVal); |
| 326 doubleVal = 0.0; | 326 doubleVal = 0.0; |
| 327 EXPECT_TRUE(objectVal->getNumber("number", &doubleVal)); | 327 EXPECT_TRUE(objectVal->getNumber("number", &doubleVal)); |
| 328 EXPECT_DOUBLE_EQ(9.87654321, doubleVal); | 328 EXPECT_DOUBLE_EQ(9.87654321, doubleVal); |
| 329 RefPtr<protocol::Value> nullVal = objectVal->get("null"); | 329 protocol::Value* nullVal = objectVal->get("null"); |
| 330 ASSERT_TRUE(nullVal.get()); | 330 ASSERT_TRUE(nullVal); |
| 331 EXPECT_EQ(Value::TypeNull, nullVal->type()); | 331 EXPECT_EQ(Value::TypeNull, nullVal->type()); |
| 332 EXPECT_TRUE(objectVal->getString("S", &strVal)); | 332 EXPECT_TRUE(objectVal->getString("S", &strVal)); |
| 333 EXPECT_EQ("str", strVal); | 333 EXPECT_EQ("str", strVal); |
| 334 | 334 |
| 335 // Test newline equivalence. | 335 // Test newline equivalence. |
| 336 root2 = parseJSON( | 336 root2 = parseJSON( |
| 337 "{\n" | 337 "{\n" |
| 338 " \"number\":9.87654321,\n" | 338 " \"number\":9.87654321,\n" |
| 339 " \"null\":null,\n" | 339 " \"null\":null,\n" |
| 340 " \"\\x53\":\"str\"\n" | 340 " \"\\x53\":\"str\"\n" |
| 341 "}\n"); | 341 "}\n"); |
| 342 ASSERT_TRUE(root2.get()); | 342 ASSERT_TRUE(root2.get()); |
| 343 EXPECT_EQ(root->toJSONString(), root2->toJSONString()); | 343 EXPECT_EQ(root->toJSONString(), root2->toJSONString()); |
| 344 | 344 |
| 345 root2 = parseJSON( | 345 root2 = parseJSON( |
| 346 "{\r\n" | 346 "{\r\n" |
| 347 " \"number\":9.87654321,\r\n" | 347 " \"number\":9.87654321,\r\n" |
| 348 " \"null\":null,\r\n" | 348 " \"null\":null,\r\n" |
| 349 " \"\\x53\":\"str\"\r\n" | 349 " \"\\x53\":\"str\"\r\n" |
| 350 "}\r\n"); | 350 "}\r\n"); |
| 351 ASSERT_TRUE(root2.get()); | 351 ASSERT_TRUE(root2.get()); |
| 352 EXPECT_EQ(root->toJSONString(), root2->toJSONString()); | 352 EXPECT_EQ(root->toJSONString(), root2->toJSONString()); |
| 353 | 353 |
| 354 // Test nesting | 354 // Test nesting |
| 355 root = parseJSON("{\"inner\":{\"array\":[true]},\"false\":false,\"d\":{}}"); | 355 root = parseJSON("{\"inner\":{\"array\":[true]},\"false\":false,\"d\":{}}"); |
| 356 ASSERT_TRUE(root.get()); | 356 ASSERT_TRUE(root.get()); |
| 357 EXPECT_EQ(Value::TypeObject, root->type()); | 357 EXPECT_EQ(Value::TypeObject, root->type()); |
| 358 objectVal = DictionaryValue::cast(root); | 358 objectVal = DictionaryValue::cast(root.get()); |
| 359 ASSERT_TRUE(objectVal); | 359 ASSERT_TRUE(objectVal); |
| 360 RefPtr<protocol::DictionaryValue> innerObject = objectVal->getObject("inner"
); | 360 protocol::DictionaryValue* innerObject = objectVal->getObject("inner"); |
| 361 ASSERT_TRUE(innerObject.get()); | 361 ASSERT_TRUE(innerObject); |
| 362 RefPtr<protocol::ListValue> innerArray = innerObject->getArray("array"); | 362 protocol::ListValue* innerArray = innerObject->getArray("array"); |
| 363 ASSERT_TRUE(innerArray.get()); | 363 ASSERT_TRUE(innerArray); |
| 364 EXPECT_EQ(1U, innerArray->length()); | 364 EXPECT_EQ(1U, innerArray->length()); |
| 365 boolValue = true; | 365 boolValue = true; |
| 366 EXPECT_TRUE(objectVal->getBoolean("false", &boolValue)); | 366 EXPECT_TRUE(objectVal->getBoolean("false", &boolValue)); |
| 367 EXPECT_FALSE(boolValue); | 367 EXPECT_FALSE(boolValue); |
| 368 innerObject = objectVal->getObject("d"); | 368 innerObject = objectVal->getObject("d"); |
| 369 EXPECT_TRUE(innerObject.get()); | 369 EXPECT_TRUE(innerObject); |
| 370 | 370 |
| 371 // Test keys with periods | 371 // Test keys with periods |
| 372 root = parseJSON("{\"a.b\":3,\"c\":2,\"d.e.f\":{\"g.h.i.j\":1}}"); | 372 root = parseJSON("{\"a.b\":3,\"c\":2,\"d.e.f\":{\"g.h.i.j\":1}}"); |
| 373 ASSERT_TRUE(root.get()); | 373 ASSERT_TRUE(root.get()); |
| 374 EXPECT_EQ(Value::TypeObject, root->type()); | 374 EXPECT_EQ(Value::TypeObject, root->type()); |
| 375 objectVal = DictionaryValue::cast(root); | 375 objectVal = DictionaryValue::cast(root.get()); |
| 376 ASSERT_TRUE(objectVal); | 376 ASSERT_TRUE(objectVal); |
| 377 int integerValue = 0; | 377 int integerValue = 0; |
| 378 EXPECT_TRUE(objectVal->getNumber("a.b", &integerValue)); | 378 EXPECT_TRUE(objectVal->getNumber("a.b", &integerValue)); |
| 379 EXPECT_EQ(3, integerValue); | 379 EXPECT_EQ(3, integerValue); |
| 380 EXPECT_TRUE(objectVal->getNumber("c", &integerValue)); | 380 EXPECT_TRUE(objectVal->getNumber("c", &integerValue)); |
| 381 EXPECT_EQ(2, integerValue); | 381 EXPECT_EQ(2, integerValue); |
| 382 innerObject = objectVal->getObject("d.e.f"); | 382 innerObject = objectVal->getObject("d.e.f"); |
| 383 ASSERT_TRUE(innerObject.get()); | 383 ASSERT_TRUE(innerObject); |
| 384 EXPECT_EQ(1, innerObject->size()); | 384 EXPECT_EQ(1, innerObject->size()); |
| 385 EXPECT_TRUE(innerObject->getNumber("g.h.i.j", &integerValue)); | 385 EXPECT_TRUE(innerObject->getNumber("g.h.i.j", &integerValue)); |
| 386 EXPECT_EQ(1, integerValue); | 386 EXPECT_EQ(1, integerValue); |
| 387 | 387 |
| 388 root = parseJSON("{\"a\":{\"b\":2},\"a.b\":1}"); | 388 root = parseJSON("{\"a\":{\"b\":2},\"a.b\":1}"); |
| 389 ASSERT_TRUE(root.get()); | 389 ASSERT_TRUE(root.get()); |
| 390 EXPECT_EQ(Value::TypeObject, root->type()); | 390 EXPECT_EQ(Value::TypeObject, root->type()); |
| 391 objectVal = DictionaryValue::cast(root); | 391 objectVal = DictionaryValue::cast(root.get()); |
| 392 ASSERT_TRUE(objectVal); | 392 ASSERT_TRUE(objectVal); |
| 393 innerObject = objectVal->getObject("a"); | 393 innerObject = objectVal->getObject("a"); |
| 394 ASSERT_TRUE(innerObject.get()); | 394 ASSERT_TRUE(innerObject); |
| 395 EXPECT_TRUE(innerObject->getNumber("b", &integerValue)); | 395 EXPECT_TRUE(innerObject->getNumber("b", &integerValue)); |
| 396 EXPECT_EQ(2, integerValue); | 396 EXPECT_EQ(2, integerValue); |
| 397 EXPECT_TRUE(objectVal->getNumber("a.b", &integerValue)); | 397 EXPECT_TRUE(objectVal->getNumber("a.b", &integerValue)); |
| 398 EXPECT_EQ(1, integerValue); | 398 EXPECT_EQ(1, integerValue); |
| 399 | 399 |
| 400 // Invalid, no closing brace | 400 // Invalid, no closing brace |
| 401 root = parseJSON("{\"a\": true"); | 401 root = parseJSON("{\"a\": true"); |
| 402 EXPECT_FALSE(root.get()); | 402 EXPECT_FALSE(root.get()); |
| 403 | 403 |
| 404 // Invalid, keys must be quoted | 404 // Invalid, keys must be quoted |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 // A few thousand adjacent lists is fine. | 440 // A few thousand adjacent lists is fine. |
| 441 StringBuilder notEvil; | 441 StringBuilder notEvil; |
| 442 notEvil.reserveCapacity(15010); | 442 notEvil.reserveCapacity(15010); |
| 443 notEvil.append('['); | 443 notEvil.append('['); |
| 444 for (int i = 0; i < 5000; ++i) | 444 for (int i = 0; i < 5000; ++i) |
| 445 notEvil.append("[],"); | 445 notEvil.append("[],"); |
| 446 notEvil.append("[]]"); | 446 notEvil.append("[]]"); |
| 447 root = parseJSON(notEvil.toString()); | 447 root = parseJSON(notEvil.toString()); |
| 448 ASSERT_TRUE(root.get()); | 448 ASSERT_TRUE(root.get()); |
| 449 EXPECT_EQ(Value::TypeArray, root->type()); | 449 EXPECT_EQ(Value::TypeArray, root->type()); |
| 450 list = ListValue::cast(root); | 450 list = ListValue::cast(root.get()); |
| 451 ASSERT_TRUE(list); | 451 ASSERT_TRUE(list); |
| 452 EXPECT_EQ(5001U, list->length()); | 452 EXPECT_EQ(5001U, list->length()); |
| 453 | 453 |
| 454 // Test utf8 encoded input | 454 // Test utf8 encoded input |
| 455 root = parseJSON("\"\\xe7\\xbd\\x91\\xe9\\xa1\\xb5\""); | 455 root = parseJSON("\"\\xe7\\xbd\\x91\\xe9\\xa1\\xb5\""); |
| 456 ASSERT_TRUE(root.get()); | 456 ASSERT_TRUE(root.get()); |
| 457 EXPECT_EQ(Value::TypeString, root->type()); | 457 EXPECT_EQ(Value::TypeString, root->type()); |
| 458 EXPECT_TRUE(root->asString(&strVal)); | 458 EXPECT_TRUE(root->asString(&strVal)); |
| 459 UChar tmp4[] = {0x7f51, 0x9875}; | 459 UChar tmp4[] = {0x7f51, 0x9875}; |
| 460 EXPECT_EQ(String(tmp4, WTF_ARRAY_LENGTH(tmp4)), strVal); | 460 EXPECT_EQ(String(tmp4, WTF_ARRAY_LENGTH(tmp4)), strVal); |
| 461 | 461 |
| 462 root = parseJSON("{\"path\": \"/tmp/\\xc3\\xa0\\xc3\\xa8\\xc3\\xb2.png\"}"); | 462 root = parseJSON("{\"path\": \"/tmp/\\xc3\\xa0\\xc3\\xa8\\xc3\\xb2.png\"}"); |
| 463 ASSERT_TRUE(root.get()); | 463 ASSERT_TRUE(root.get()); |
| 464 EXPECT_EQ(Value::TypeObject, root->type()); | 464 EXPECT_EQ(Value::TypeObject, root->type()); |
| 465 objectVal = DictionaryValue::cast(root); | 465 objectVal = DictionaryValue::cast(root.get()); |
| 466 ASSERT_TRUE(objectVal); | 466 ASSERT_TRUE(objectVal); |
| 467 EXPECT_TRUE(objectVal->getString("path", &strVal)); | 467 EXPECT_TRUE(objectVal->getString("path", &strVal)); |
| 468 UChar tmp5[] = {0x2f, 0x74, 0x6d, 0x70, 0x2f, 0xe0, 0xe8, 0xf2, 0x2e, 0x70,
0x6e, 0x67}; | 468 UChar tmp5[] = {0x2f, 0x74, 0x6d, 0x70, 0x2f, 0xe0, 0xe8, 0xf2, 0x2e, 0x70,
0x6e, 0x67}; |
| 469 EXPECT_EQ(String(tmp5, WTF_ARRAY_LENGTH(tmp5)), strVal); | 469 EXPECT_EQ(String(tmp5, WTF_ARRAY_LENGTH(tmp5)), strVal); |
| 470 | 470 |
| 471 // Test invalid utf8 encoded input | 471 // Test invalid utf8 encoded input |
| 472 root = parseJSON("\"345\\xb0\\xa1\\xb0\\xa2\""); | 472 root = parseJSON("\"345\\xb0\\xa1\\xb0\\xa2\""); |
| 473 ASSERT_FALSE(root.get()); | 473 ASSERT_FALSE(root.get()); |
| 474 root = parseJSON("\"123\\xc0\\x81\""); | 474 root = parseJSON("\"123\\xc0\\x81\""); |
| 475 ASSERT_FALSE(root.get()); | 475 ASSERT_FALSE(root.get()); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 "\"\\u123g\"", | 537 "\"\\u123g\"", |
| 538 "{\n\"eh:\n}", | 538 "{\n\"eh:\n}", |
| 539 "////", | 539 "////", |
| 540 "*/**/", | 540 "*/**/", |
| 541 "/**/", | 541 "/**/", |
| 542 "/*/", | 542 "/*/", |
| 543 "//**/" | 543 "//**/" |
| 544 }; | 544 }; |
| 545 | 545 |
| 546 for (size_t i = 0; i < WTF_ARRAY_LENGTH(invalidJson); ++i) { | 546 for (size_t i = 0; i < WTF_ARRAY_LENGTH(invalidJson); ++i) { |
| 547 RefPtr<protocol::Value> result = parseJSON(invalidJson[i]); | 547 OwnPtr<protocol::Value> result = parseJSON(invalidJson[i]); |
| 548 EXPECT_FALSE(result.get()); | 548 EXPECT_FALSE(result.get()); |
| 549 } | 549 } |
| 550 } | 550 } |
| 551 | 551 |
| 552 } // namespace protocol | 552 } // namespace protocol |
| 553 } // namespace blink | 553 } // namespace blink |
| OLD | NEW |