| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/globals.h" | 5 #include "platform/globals.h" |
| 6 | 6 |
| 7 #include "include/dart_debugger_api.h" | 7 #include "include/dart_debugger_api.h" |
| 8 #include "vm/dart_api_impl.h" | 8 #include "vm/dart_api_impl.h" |
| 9 #include "vm/dart_entry.h" | 9 #include "vm/dart_entry.h" |
| 10 #include "vm/debugger.h" | 10 #include "vm/debugger.h" |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 handler.msg()); | 440 handler.msg()); |
| 441 | 441 |
| 442 // int | 442 // int |
| 443 service_msg = Eval(lib, "[port, ['objects', 'int-123'], [], []]"); | 443 service_msg = Eval(lib, "[port, ['objects', 'int-123'], [], []]"); |
| 444 Service::HandleIsolateMessage(isolate, service_msg); | 444 Service::HandleIsolateMessage(isolate, service_msg); |
| 445 handler.HandleNextMessage(); | 445 handler.HandleNextMessage(); |
| 446 handler.filterMsg("name"); | 446 handler.filterMsg("name"); |
| 447 EXPECT_STREQ( | 447 EXPECT_STREQ( |
| 448 "{\"type\":\"Smi\"," | 448 "{\"type\":\"Smi\"," |
| 449 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 449 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 450 "\"user_name\":\"int\"}," | 450 "\"user_name\":\"_Smi\"}," |
| 451 "\"fields\":[]," | 451 "\"fields\":[]," |
| 452 "\"id\":\"objects\\/int-123\"," | 452 "\"id\":\"objects\\/int-123\"," |
| 453 "\"valueAsString\":\"123\"}", | 453 "\"valueAsString\":\"123\"}", |
| 454 handler.msg()); | 454 handler.msg()); |
| 455 | 455 |
| 456 // object id ring / valid | 456 // object id ring / valid |
| 457 service_msg = Eval(lib, "[port, ['objects', '$validId'], [], []]"); | 457 service_msg = Eval(lib, "[port, ['objects', '$validId'], [], []]"); |
| 458 Service::HandleIsolateMessage(isolate, service_msg); | 458 Service::HandleIsolateMessage(isolate, service_msg); |
| 459 handler.HandleNextMessage(); | 459 handler.HandleNextMessage(); |
| 460 handler.filterMsg("name"); | 460 handler.filterMsg("name"); |
| 461 handler.filterMsg("size"); | 461 handler.filterMsg("size"); |
| 462 handler.filterMsg("id"); | 462 handler.filterMsg("id"); |
| 463 EXPECT_STREQ( | 463 EXPECT_STREQ( |
| 464 "{\"type\":\"String\"," | 464 "{\"type\":\"String\"," |
| 465 "\"class\":{\"type\":\"@Class\"," | 465 "\"class\":{\"type\":\"@Class\"," |
| 466 "\"user_name\":\"String\"},\"fields\":[]," | 466 "\"user_name\":\"_OneByteString\"},\"fields\":[]," |
| 467 "\"valueAsString\":\"\\\"value\\\"\"}", | 467 "\"valueAsString\":\"\\\"value\\\"\"}", |
| 468 handler.msg()); | 468 handler.msg()); |
| 469 | 469 |
| 470 // object id ring / invalid => expired | 470 // object id ring / invalid => expired |
| 471 service_msg = Eval(lib, "[port, ['objects', '99999999'], [], []]"); | 471 service_msg = Eval(lib, "[port, ['objects', '99999999'], [], []]"); |
| 472 Service::HandleIsolateMessage(isolate, service_msg); | 472 Service::HandleIsolateMessage(isolate, service_msg); |
| 473 handler.HandleNextMessage(); | 473 handler.HandleNextMessage(); |
| 474 handler.filterMsg("name"); | 474 handler.filterMsg("name"); |
| 475 EXPECT_STREQ( | 475 EXPECT_STREQ( |
| 476 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," | 476 "{\"type\":\"Null\",\"id\":\"objects\\/expired\"," |
| (...skipping 15 matching lines...) Expand all Loading... |
| 492 // int/eval => good | 492 // int/eval => good |
| 493 service_msg = Eval(lib, | 493 service_msg = Eval(lib, |
| 494 "[port, ['objects', 'int-123', 'eval'], " | 494 "[port, ['objects', 'int-123', 'eval'], " |
| 495 "['expr'], ['this+99']]"); | 495 "['expr'], ['this+99']]"); |
| 496 Service::HandleIsolateMessage(isolate, service_msg); | 496 Service::HandleIsolateMessage(isolate, service_msg); |
| 497 handler.HandleNextMessage(); | 497 handler.HandleNextMessage(); |
| 498 handler.filterMsg("name"); | 498 handler.filterMsg("name"); |
| 499 EXPECT_STREQ( | 499 EXPECT_STREQ( |
| 500 "{\"type\":\"@Smi\"," | 500 "{\"type\":\"@Smi\"," |
| 501 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 501 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 502 "\"user_name\":\"int\"}," | 502 "\"user_name\":\"_Smi\"}," |
| 503 "\"id\":\"objects\\/int-222\"," | 503 "\"id\":\"objects\\/int-222\"," |
| 504 "\"valueAsString\":\"222\"}", | 504 "\"valueAsString\":\"222\"}", |
| 505 handler.msg()); | 505 handler.msg()); |
| 506 | 506 |
| 507 // eval returning null works | 507 // eval returning null works |
| 508 service_msg = Eval(lib, | 508 service_msg = Eval(lib, |
| 509 "[port, ['objects', 'int-123', 'eval'], " | 509 "[port, ['objects', 'int-123', 'eval'], " |
| 510 "['expr'], ['null']]"); | 510 "['expr'], ['null']]"); |
| 511 Service::HandleIsolateMessage(isolate, service_msg); | 511 Service::HandleIsolateMessage(isolate, service_msg); |
| 512 handler.HandleNextMessage(); | 512 handler.HandleNextMessage(); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 // Evaluate an expression from a library. | 591 // Evaluate an expression from a library. |
| 592 service_msg = EvalF(h_lib, | 592 service_msg = EvalF(h_lib, |
| 593 "[port, ['libraries', '%" Pd "', 'eval'], " | 593 "[port, ['libraries', '%" Pd "', 'eval'], " |
| 594 "['expr'], ['libVar - 1']]", lib_id); | 594 "['expr'], ['libVar - 1']]", lib_id); |
| 595 Service::HandleIsolateMessage(isolate, service_msg); | 595 Service::HandleIsolateMessage(isolate, service_msg); |
| 596 handler.HandleNextMessage(); | 596 handler.HandleNextMessage(); |
| 597 handler.filterMsg("name"); | 597 handler.filterMsg("name"); |
| 598 EXPECT_STREQ( | 598 EXPECT_STREQ( |
| 599 "{\"type\":\"@Smi\"," | 599 "{\"type\":\"@Smi\"," |
| 600 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 600 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 601 "\"user_name\":\"int\"},\"id\":\"objects\\/int-54320\"," | 601 "\"user_name\":\"_Smi\"},\"id\":\"objects\\/int-54320\"," |
| 602 "\"valueAsString\":\"54320\"}", | 602 "\"valueAsString\":\"54320\"}", |
| 603 handler.msg()); | 603 handler.msg()); |
| 604 } | 604 } |
| 605 | 605 |
| 606 | 606 |
| 607 TEST_CASE(Service_Classes) { | 607 TEST_CASE(Service_Classes) { |
| 608 const char* kScript = | 608 const char* kScript = |
| 609 "var port;\n" // Set to our mock port by C++. | 609 "var port;\n" // Set to our mock port by C++. |
| 610 "\n" | 610 "\n" |
| 611 "class A {\n" | 611 "class A {\n" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 // Evaluate an expression from class A. | 665 // Evaluate an expression from class A. |
| 666 service_msg = EvalF(h_lib, | 666 service_msg = EvalF(h_lib, |
| 667 "[port, ['classes', '%" Pd "', 'eval'], " | 667 "[port, ['classes', '%" Pd "', 'eval'], " |
| 668 "['expr'], ['cobra + 100000']]", cid); | 668 "['expr'], ['cobra + 100000']]", cid); |
| 669 Service::HandleIsolateMessage(isolate, service_msg); | 669 Service::HandleIsolateMessage(isolate, service_msg); |
| 670 handler.HandleNextMessage(); | 670 handler.HandleNextMessage(); |
| 671 handler.filterMsg("name"); | 671 handler.filterMsg("name"); |
| 672 EXPECT_STREQ( | 672 EXPECT_STREQ( |
| 673 "{\"type\":\"@Smi\"," | 673 "{\"type\":\"@Smi\"," |
| 674 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," | 674 "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\"," |
| 675 "\"user_name\":\"int\"}," | 675 "\"user_name\":\"_Smi\"}," |
| 676 "\"id\":\"objects\\/int-111235\"," | 676 "\"id\":\"objects\\/int-111235\"," |
| 677 "\"valueAsString\":\"111235\"}", | 677 "\"valueAsString\":\"111235\"}", |
| 678 handler.msg()); | 678 handler.msg()); |
| 679 | 679 |
| 680 // Request function 0 from class A. | 680 // Request function 0 from class A. |
| 681 service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'functions', '0']," | 681 service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'functions', '0']," |
| 682 "[], []]", cid); | 682 "[], []]", cid); |
| 683 Service::HandleIsolateMessage(isolate, service_msg); | 683 Service::HandleIsolateMessage(isolate, service_msg); |
| 684 handler.HandleNextMessage(); | 684 handler.HandleNextMessage(); |
| 685 EXPECT_SUBSTRING("\"type\":\"Function\"", handler.msg()); | 685 EXPECT_SUBSTRING("\"type\":\"Function\"", handler.msg()); |
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1370 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); | 1370 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); |
| 1371 Service::HandleIsolateMessage(isolate, service_msg); | 1371 Service::HandleIsolateMessage(isolate, service_msg); |
| 1372 handler.HandleNextMessage(); | 1372 handler.HandleNextMessage(); |
| 1373 // Expect error. | 1373 // Expect error. |
| 1374 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); | 1374 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); |
| 1375 } | 1375 } |
| 1376 | 1376 |
| 1377 #endif // !defined(TARGET_ARCH_ARM64) | 1377 #endif // !defined(TARGET_ARCH_ARM64) |
| 1378 | 1378 |
| 1379 } // namespace dart | 1379 } // namespace dart |
| OLD | NEW |