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

Side by Side Diff: runtime/vm/service_test.cc

Issue 354763004: - Implement Isolate.pause and Isolate.resume. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 _msg = new_msg; 82 _msg = new_msg;
83 } 83 }
84 84
85 const char* msg() const { return _msg; } 85 const char* msg() const { return _msg; }
86 86
87 private: 87 private:
88 char* _msg; 88 char* _msg;
89 }; 89 };
90 90
91 91
92 static RawInstance* Eval(Dart_Handle lib, const char* expr) { 92 static RawArray* Eval(Dart_Handle lib, const char* expr) {
93 Dart_Handle expr_val = Dart_EvaluateExpr(lib, NewString(expr)); 93 Dart_Handle expr_val = Dart_EvaluateExpr(lib, NewString(expr));
94 EXPECT_VALID(expr_val); 94 EXPECT_VALID(expr_val);
95 Isolate* isolate = Isolate::Current(); 95 Isolate* isolate = Isolate::Current();
96 const GrowableObjectArray& value = 96 const GrowableObjectArray& value =
97 Api::UnwrapGrowableObjectArrayHandle(isolate, expr_val); 97 Api::UnwrapGrowableObjectArrayHandle(isolate, expr_val);
98 const Array& result = Array::Handle(Array::MakeArray(value)); 98 const Array& result = Array::Handle(Array::MakeArray(value));
99 GrowableObjectArray& growable = GrowableObjectArray::Handle(); 99 GrowableObjectArray& growable = GrowableObjectArray::Handle();
100 growable ^= result.At(3); 100 growable ^= result.At(3);
101 Array& array = Array::Handle(Array::MakeArray(growable)); 101 Array& array = Array::Handle(Array::MakeArray(growable));
102 result.SetAt(3, array); 102 result.SetAt(3, array);
103 growable ^= result.At(4); 103 growable ^= result.At(4);
104 array = Array::MakeArray(growable); 104 array = Array::MakeArray(growable);
105 result.SetAt(4, array); 105 result.SetAt(4, array);
106 return result.raw(); 106 return result.raw();
107 } 107 }
108 108
109 109
110 static RawInstance* EvalF(Dart_Handle lib, const char* fmt, ...) { 110 static RawArray* EvalF(Dart_Handle lib, const char* fmt, ...) {
111 Isolate* isolate = Isolate::Current(); 111 Isolate* isolate = Isolate::Current();
112 112
113 va_list args; 113 va_list args;
114 va_start(args, fmt); 114 va_start(args, fmt);
115 intptr_t len = OS::VSNPrint(NULL, 0, fmt, args); 115 intptr_t len = OS::VSNPrint(NULL, 0, fmt, args);
116 va_end(args); 116 va_end(args);
117 117
118 char* buffer = isolate->current_zone()->Alloc<char>(len + 1); 118 char* buffer = isolate->current_zone()->Alloc<char>(len + 1);
119 va_list args2; 119 va_list args2;
120 va_start(args2, fmt); 120 va_start(args2, fmt);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 174 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
175 EXPECT_VALID(lib); 175 EXPECT_VALID(lib);
176 176
177 // Build a mock message handler and wrap it in a dart port. 177 // Build a mock message handler and wrap it in a dart port.
178 ServiceTestMessageHandler handler; 178 ServiceTestMessageHandler handler;
179 Dart_Port port_id = PortMap::CreatePort(&handler); 179 Dart_Port port_id = PortMap::CreatePort(&handler);
180 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 180 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
181 EXPECT_VALID(port); 181 EXPECT_VALID(port);
182 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 182 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
183 183
184 Instance& service_msg = Instance::Handle(); 184 Array& service_msg = Array::Handle();
185 185
186 // Get the isolate summary. 186 // Get the isolate summary.
187 service_msg = Eval(lib, "[0, port, [], [], []]"); 187 service_msg = Eval(lib, "[0, port, [], [], []]");
188 Service::HandleIsolateMessage(isolate, service_msg); 188 Service::HandleIsolateMessage(isolate, service_msg);
189 handler.HandleNextMessage(); 189 handler.HandleNextMessage();
190 190
191 JSONReader reader(handler.msg()); 191 JSONReader reader(handler.msg());
192 192
193 const int kBufferSize = 128; 193 const int kBufferSize = 128;
194 char buffer[kBufferSize]; 194 char buffer[kBufferSize];
(...skipping 30 matching lines...) Expand all
225 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 225 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
226 EXPECT_VALID(lib); 226 EXPECT_VALID(lib);
227 227
228 // Build a mock message handler and wrap it in a dart port. 228 // Build a mock message handler and wrap it in a dart port.
229 ServiceTestMessageHandler handler; 229 ServiceTestMessageHandler handler;
230 Dart_Port port_id = PortMap::CreatePort(&handler); 230 Dart_Port port_id = PortMap::CreatePort(&handler);
231 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 231 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
232 EXPECT_VALID(port); 232 EXPECT_VALID(port);
233 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 233 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
234 234
235 Instance& service_msg = Instance::Handle(); 235 Array& service_msg = Array::Handle();
236 236
237 // Get the stacktrace. 237 // Get the stacktrace.
238 service_msg = Eval(lib, "[0, port, ['stacktrace'], [], []]"); 238 service_msg = Eval(lib, "[0, port, ['stacktrace'], [], []]");
239 Service::HandleIsolateMessage(isolate, service_msg); 239 Service::HandleIsolateMessage(isolate, service_msg);
240 handler.HandleNextMessage(); 240 handler.HandleNextMessage();
241 EXPECT_STREQ( 241 EXPECT_STREQ(
242 "{\"type\":\"StackTrace\",\"id\":\"stacktrace\",\"members\":[]}", 242 "{\"type\":\"StackTrace\",\"id\":\"stacktrace\",\"members\":[]}",
243 handler.msg()); 243 handler.msg());
244 244
245 // Malformed request. 245 // Malformed request.
(...skipping 19 matching lines...) Expand all
265 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 265 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
266 EXPECT_VALID(lib); 266 EXPECT_VALID(lib);
267 267
268 // Build a mock message handler and wrap it in a dart port. 268 // Build a mock message handler and wrap it in a dart port.
269 ServiceTestMessageHandler handler; 269 ServiceTestMessageHandler handler;
270 Dart_Port port_id = PortMap::CreatePort(&handler); 270 Dart_Port port_id = PortMap::CreatePort(&handler);
271 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 271 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
272 EXPECT_VALID(port); 272 EXPECT_VALID(port);
273 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 273 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
274 274
275 Instance& service_msg = Instance::Handle(); 275 Array& service_msg = Array::Handle();
276 276
277 // Add a breakpoint. 277 // Add a breakpoint.
278 const String& url = String::Handle(String::New(TestCase::url())); 278 const String& url = String::Handle(String::New(TestCase::url()));
279 isolate->debugger()->SetBreakpointAtLine(url, 3); 279 isolate->debugger()->SetBreakpointAtLine(url, 3);
280 280
281 // Get the breakpoint list. 281 // Get the breakpoint list.
282 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]"); 282 service_msg = Eval(lib, "[0, port, ['debug', 'breakpoints'], [], []]");
283 Service::HandleIsolateMessage(isolate, service_msg); 283 Service::HandleIsolateMessage(isolate, service_msg);
284 handler.HandleNextMessage(); 284 handler.HandleNextMessage();
285 EXPECT_STREQ( 285 EXPECT_STREQ(
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 { 373 {
374 HANDLESCOPE(isolate); 374 HANDLESCOPE(isolate);
375 const String& str = String::Handle(String::New("value", Heap::kOld)); 375 const String& str = String::Handle(String::New("value", Heap::kOld));
376 arr.SetAt(0, str); 376 arr.SetAt(0, str);
377 } 377 }
378 intptr_t arr_id = ring->GetIdForObject(arr.raw()); 378 intptr_t arr_id = ring->GetIdForObject(arr.raw());
379 Dart_Handle valid_id = Dart_NewInteger(arr_id); 379 Dart_Handle valid_id = Dart_NewInteger(arr_id);
380 EXPECT_VALID(valid_id); 380 EXPECT_VALID(valid_id);
381 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id)); 381 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id));
382 382
383 Instance& service_msg = Instance::Handle(); 383 Array& service_msg = Array::Handle();
384 384
385 // null 385 // null
386 service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]"); 386 service_msg = Eval(lib, "[0, port, ['objects', 'null'], [], []]");
387 Service::HandleIsolateMessage(isolate, service_msg); 387 Service::HandleIsolateMessage(isolate, service_msg);
388 handler.HandleNextMessage(); 388 handler.HandleNextMessage();
389 handler.filterMsg("name"); 389 handler.filterMsg("name");
390 EXPECT_STREQ( 390 EXPECT_STREQ(
391 "{\"type\":\"Null\",\"id\":\"objects\\/null\"," 391 "{\"type\":\"Null\",\"id\":\"objects\\/null\","
392 "\"valueAsString\":\"null\"}", 392 "\"valueAsString\":\"null\"}",
393 handler.msg()); 393 handler.msg());
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 } 634 }
635 ASSERT(lib_id > 0); 635 ASSERT(lib_id > 0);
636 636
637 // Build a mock message handler and wrap it in a dart port. 637 // Build a mock message handler and wrap it in a dart port.
638 ServiceTestMessageHandler handler; 638 ServiceTestMessageHandler handler;
639 Dart_Port port_id = PortMap::CreatePort(&handler); 639 Dart_Port port_id = PortMap::CreatePort(&handler);
640 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 640 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
641 EXPECT_VALID(port); 641 EXPECT_VALID(port);
642 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 642 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
643 643
644 Instance& service_msg = Instance::Handle(); 644 Array& service_msg = Array::Handle();
645 645
646 // Request library. 646 // Request library.
647 service_msg = EvalF(h_lib, 647 service_msg = EvalF(h_lib,
648 "[0, port, ['libraries', '%" Pd "'], [], []]", lib_id); 648 "[0, port, ['libraries', '%" Pd "'], [], []]", lib_id);
649 Service::HandleIsolateMessage(isolate, service_msg); 649 Service::HandleIsolateMessage(isolate, service_msg);
650 handler.HandleNextMessage(); 650 handler.HandleNextMessage();
651 EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg()); 651 EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg());
652 EXPECT_SUBSTRING("\"url\":\"test-lib\"", handler.msg()); 652 EXPECT_SUBSTRING("\"url\":\"test-lib\"", handler.msg());
653 653
654 // Evaluate an expression from a library. 654 // Evaluate an expression from a library.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 EXPECT(!class_a.IsNull()); 700 EXPECT(!class_a.IsNull());
701 intptr_t cid = class_a.id(); 701 intptr_t cid = class_a.id();
702 702
703 // Build a mock message handler and wrap it in a dart port. 703 // Build a mock message handler and wrap it in a dart port.
704 ServiceTestMessageHandler handler; 704 ServiceTestMessageHandler handler;
705 Dart_Port port_id = PortMap::CreatePort(&handler); 705 Dart_Port port_id = PortMap::CreatePort(&handler);
706 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 706 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
707 EXPECT_VALID(port); 707 EXPECT_VALID(port);
708 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 708 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
709 709
710 Instance& service_msg = Instance::Handle(); 710 Array& service_msg = Array::Handle();
711 711
712 // Request an invalid class id. 712 // Request an invalid class id.
713 service_msg = Eval(h_lib, "[0, port, ['classes', '999999'], [], []]"); 713 service_msg = Eval(h_lib, "[0, port, ['classes', '999999'], [], []]");
714 Service::HandleIsolateMessage(isolate, service_msg); 714 Service::HandleIsolateMessage(isolate, service_msg);
715 handler.HandleNextMessage(); 715 handler.HandleNextMessage();
716 EXPECT_STREQ( 716 EXPECT_STREQ(
717 "{\"type\":\"Error\",\"id\":\"\"," 717 "{\"type\":\"Error\",\"id\":\"\","
718 "\"message\":\"999999 is not a valid class id.\"," 718 "\"message\":\"999999 is not a valid class id.\","
719 "\"request\":{\"arguments\":[\"classes\",\"999999\"]," 719 "\"request\":{\"arguments\":[\"classes\",\"999999\"],"
720 "\"option_keys\":[],\"option_values\":[]}}", handler.msg()); 720 "\"option_keys\":[],\"option_values\":[]}}", handler.msg());
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 EXPECT(!class_a.IsNull()); 883 EXPECT(!class_a.IsNull());
884 intptr_t cid = class_a.id(); 884 intptr_t cid = class_a.id();
885 885
886 // Build a mock message handler and wrap it in a dart port. 886 // Build a mock message handler and wrap it in a dart port.
887 ServiceTestMessageHandler handler; 887 ServiceTestMessageHandler handler;
888 Dart_Port port_id = PortMap::CreatePort(&handler); 888 Dart_Port port_id = PortMap::CreatePort(&handler);
889 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 889 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
890 EXPECT_VALID(port); 890 EXPECT_VALID(port);
891 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 891 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
892 892
893 Instance& service_msg = Instance::Handle(); 893 Array& service_msg = Array::Handle();
894 894
895 // Request the class A over the service. 895 // Request the class A over the service.
896 service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid); 896 service_msg = EvalF(h_lib, "[0, port, ['classes', '%" Pd "'], [], []]", cid);
897 Service::HandleIsolateMessage(isolate, service_msg); 897 Service::HandleIsolateMessage(isolate, service_msg);
898 handler.HandleNextMessage(); 898 handler.HandleNextMessage();
899 EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg()); 899 EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
900 EXPECT_SUBSTRING("\"name\":\"A\"", handler.msg()); 900 EXPECT_SUBSTRING("\"name\":\"A\"", handler.msg());
901 ExpectSubstringF(handler.msg(), 901 ExpectSubstringF(handler.msg(),
902 "\"id\":\"classes\\/%" Pd "\"", cid); 902 "\"id\":\"classes\\/%" Pd "\"", cid);
903 903
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 EXPECT_GT(code_c.Size(), 16); 989 EXPECT_GT(code_c.Size(), 16);
990 uword last = entry + code_c.Size(); 990 uword last = entry + code_c.Size();
991 991
992 // Build a mock message handler and wrap it in a dart port. 992 // Build a mock message handler and wrap it in a dart port.
993 ServiceTestMessageHandler handler; 993 ServiceTestMessageHandler handler;
994 Dart_Port port_id = PortMap::CreatePort(&handler); 994 Dart_Port port_id = PortMap::CreatePort(&handler);
995 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 995 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
996 EXPECT_VALID(port); 996 EXPECT_VALID(port);
997 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 997 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
998 998
999 Instance& service_msg = Instance::Handle(); 999 Array& service_msg = Array::Handle();
1000 1000
1001 // Request an invalid code object. 1001 // Request an invalid code object.
1002 service_msg = Eval(h_lib, "[0, port, ['code', '0'], [], []]"); 1002 service_msg = Eval(h_lib, "[0, port, ['code', '0'], [], []]");
1003 Service::HandleIsolateMessage(isolate, service_msg); 1003 Service::HandleIsolateMessage(isolate, service_msg);
1004 handler.HandleNextMessage(); 1004 handler.HandleNextMessage();
1005 EXPECT_STREQ( 1005 EXPECT_STREQ(
1006 "{\"type\":\"Error\",\"id\":\"\",\"message\":\"Malformed code id: 0\"," 1006 "{\"type\":\"Error\",\"id\":\"\",\"message\":\"Malformed code id: 0\","
1007 "\"request\":{\"arguments\":[\"code\",\"0\"]," 1007 "\"request\":{\"arguments\":[\"code\",\"0\"],"
1008 "\"option_keys\":[],\"option_values\":[]}}", handler.msg()); 1008 "\"option_keys\":[],\"option_values\":[]}}", handler.msg());
1009 1009
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1093 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1094 EXPECT_VALID(lib); 1094 EXPECT_VALID(lib);
1095 1095
1096 // Build a mock message handler and wrap it in a dart port. 1096 // Build a mock message handler and wrap it in a dart port.
1097 ServiceTestMessageHandler handler; 1097 ServiceTestMessageHandler handler;
1098 Dart_Port port_id = PortMap::CreatePort(&handler); 1098 Dart_Port port_id = PortMap::CreatePort(&handler);
1099 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1099 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1100 EXPECT_VALID(port); 1100 EXPECT_VALID(port);
1101 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1101 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1102 1102
1103 Instance& service_msg = Instance::Handle(); 1103 Array& service_msg = Array::Handle();
1104 service_msg = Eval(lib, "[0, port, ['vm'], [], []]"); 1104 service_msg = Eval(lib, "[0, port, ['vm'], [], []]");
1105 1105
1106 Service::HandleRootMessage(service_msg); 1106 Service::HandleRootMessage(service_msg);
1107 handler.HandleNextMessage(); 1107 handler.HandleNextMessage();
1108 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg()); 1108 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg());
1109 EXPECT_SUBSTRING("\"targetCPU\"", handler.msg()); 1109 EXPECT_SUBSTRING("\"targetCPU\"", handler.msg());
1110 EXPECT_SUBSTRING("\"hostCPU\"", handler.msg()); 1110 EXPECT_SUBSTRING("\"hostCPU\"", handler.msg());
1111 EXPECT_SUBSTRING("\"version\"", handler.msg()); 1111 EXPECT_SUBSTRING("\"version\"", handler.msg());
1112 EXPECT_SUBSTRING("\"uptime\"", handler.msg()); 1112 EXPECT_SUBSTRING("\"uptime\"", handler.msg());
1113 EXPECT_SUBSTRING("\"isolates\"", handler.msg()); 1113 EXPECT_SUBSTRING("\"isolates\"", handler.msg());
(...skipping 11 matching lines...) Expand all
1125 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1125 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1126 EXPECT_VALID(lib); 1126 EXPECT_VALID(lib);
1127 1127
1128 // Build a mock message handler and wrap it in a dart port. 1128 // Build a mock message handler and wrap it in a dart port.
1129 ServiceTestMessageHandler handler; 1129 ServiceTestMessageHandler handler;
1130 Dart_Port port_id = PortMap::CreatePort(&handler); 1130 Dart_Port port_id = PortMap::CreatePort(&handler);
1131 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1131 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1132 EXPECT_VALID(port); 1132 EXPECT_VALID(port);
1133 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1133 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1134 1134
1135 Instance& service_msg = Instance::Handle(); 1135 Array& service_msg = Array::Handle();
1136 service_msg = Eval(lib, "[0, port, ['flags'], [], []]"); 1136 service_msg = Eval(lib, "[0, port, ['flags'], [], []]");
1137 1137
1138 // Make sure we can get the FlagList. 1138 // Make sure we can get the FlagList.
1139 Service::HandleRootMessage(service_msg); 1139 Service::HandleRootMessage(service_msg);
1140 handler.HandleNextMessage(); 1140 handler.HandleNextMessage();
1141 EXPECT_SUBSTRING("\"type\":\"FlagList\",\"id\":\"flags\"", handler.msg()); 1141 EXPECT_SUBSTRING("\"type\":\"FlagList\",\"id\":\"flags\"", handler.msg());
1142 EXPECT_SUBSTRING( 1142 EXPECT_SUBSTRING(
1143 "\"name\":\"service_testing_flag\",\"comment\":\"Comment\"," 1143 "\"name\":\"service_testing_flag\",\"comment\":\"Comment\","
1144 "\"flagType\":\"bool\",\"valueAsString\":\"false\"", 1144 "\"flagType\":\"bool\",\"valueAsString\":\"false\"",
1145 handler.msg()); 1145 handler.msg());
(...skipping 28 matching lines...) Expand all
1174 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); 1174 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
1175 EXPECT_VALID(h_lib); 1175 EXPECT_VALID(h_lib);
1176 1176
1177 // Build a mock message handler and wrap it in a dart port. 1177 // Build a mock message handler and wrap it in a dart port.
1178 ServiceTestMessageHandler handler; 1178 ServiceTestMessageHandler handler;
1179 Dart_Port port_id = PortMap::CreatePort(&handler); 1179 Dart_Port port_id = PortMap::CreatePort(&handler);
1180 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1180 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1181 EXPECT_VALID(port); 1181 EXPECT_VALID(port);
1182 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1182 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1183 1183
1184 Instance& service_msg = Instance::Handle(); 1184 Array& service_msg = Array::Handle();
1185 service_msg = Eval(h_lib, "[0, port, ['scripts', 'test-lib'], [], []]"); 1185 service_msg = Eval(h_lib, "[0, port, ['scripts', 'test-lib'], [], []]");
1186 Service::HandleIsolateMessage(isolate, service_msg); 1186 Service::HandleIsolateMessage(isolate, service_msg);
1187 handler.HandleNextMessage(); 1187 handler.HandleNextMessage();
1188 EXPECT_STREQ( 1188 EXPECT_STREQ(
1189 "{\"type\":\"Script\",\"id\":\"scripts\\/test-lib\"," 1189 "{\"type\":\"Script\",\"id\":\"scripts\\/test-lib\","
1190 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1190 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1191 "\"kind\":\"script\"," 1191 "\"kind\":\"script\","
1192 "\"source\":\"var port;\\n\\nmain() {\\n}\"," 1192 "\"source\":\"var port;\\n\\nmain() {\\n}\","
1193 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}", 1193 "\"tokenPosTable\":[[1,0,1,1,5,2,9],[3,5,1,6,5,7,6,8,8],[4,10,1]]}",
1194 handler.msg()); 1194 handler.msg());
(...skipping 22 matching lines...) Expand all
1217 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); 1217 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL);
1218 EXPECT_VALID(result); 1218 EXPECT_VALID(result);
1219 1219
1220 // Build a mock message handler and wrap it in a dart port. 1220 // Build a mock message handler and wrap it in a dart port.
1221 ServiceTestMessageHandler handler; 1221 ServiceTestMessageHandler handler;
1222 Dart_Port port_id = PortMap::CreatePort(&handler); 1222 Dart_Port port_id = PortMap::CreatePort(&handler);
1223 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1223 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1224 EXPECT_VALID(port); 1224 EXPECT_VALID(port);
1225 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1225 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1226 1226
1227 Instance& service_msg = Instance::Handle(); 1227 Array& service_msg = Array::Handle();
1228 service_msg = Eval(h_lib, "[0, port, ['coverage'], [], []]"); 1228 service_msg = Eval(h_lib, "[0, port, ['coverage'], [], []]");
1229 Service::HandleIsolateMessage(isolate, service_msg); 1229 Service::HandleIsolateMessage(isolate, service_msg);
1230 handler.HandleNextMessage(); 1230 handler.HandleNextMessage();
1231 EXPECT_SUBSTRING( 1231 EXPECT_SUBSTRING(
1232 "{\"source\":\"test-lib\",\"script\":{" 1232 "{\"source\":\"test-lib\",\"script\":{"
1233 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1233 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
1234 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1234 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1235 "\"kind\":\"script\"},\"hits\":" 1235 "\"kind\":\"script\"},\"hits\":"
1236 "[5,1,6,1]}", handler.msg()); 1236 "[5,1,6,1]}", handler.msg());
1237 } 1237 }
(...skipping 18 matching lines...) Expand all
1256 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); 1256 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL);
1257 EXPECT_VALID(result); 1257 EXPECT_VALID(result);
1258 1258
1259 // Build a mock message handler and wrap it in a dart port. 1259 // Build a mock message handler and wrap it in a dart port.
1260 ServiceTestMessageHandler handler; 1260 ServiceTestMessageHandler handler;
1261 Dart_Port port_id = PortMap::CreatePort(&handler); 1261 Dart_Port port_id = PortMap::CreatePort(&handler);
1262 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1262 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1263 EXPECT_VALID(port); 1263 EXPECT_VALID(port);
1264 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1264 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1265 1265
1266 Instance& service_msg = Instance::Handle(); 1266 Array& service_msg = Array::Handle();
1267 service_msg = Eval( 1267 service_msg = Eval(
1268 h_lib, "[0, port, ['scripts', 'test-lib', 'coverage'], [], []]"); 1268 h_lib, "[0, port, ['scripts', 'test-lib', 'coverage'], [], []]");
1269 Service::HandleIsolateMessage(isolate, service_msg); 1269 Service::HandleIsolateMessage(isolate, service_msg);
1270 handler.HandleNextMessage(); 1270 handler.HandleNextMessage();
1271 EXPECT_STREQ( 1271 EXPECT_STREQ(
1272 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1272 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1273 "{\"source\":\"test-lib\",\"script\":{" 1273 "{\"source\":\"test-lib\",\"script\":{"
1274 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1274 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
1275 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1275 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1276 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg()); 1276 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1310 for (i = 0; i < libs.Length(); i++) { 1310 for (i = 0; i < libs.Length(); i++) {
1311 if (libs.At(i) == lib.raw()) { 1311 if (libs.At(i) == lib.raw()) {
1312 break; 1312 break;
1313 } 1313 }
1314 } 1314 }
1315 ASSERT(i != libs.Length()); 1315 ASSERT(i != libs.Length());
1316 char buf[1024]; 1316 char buf[1024];
1317 OS::SNPrint(buf, sizeof(buf), 1317 OS::SNPrint(buf, sizeof(buf),
1318 "[0, port, ['libraries', '%" Pd "', 'coverage'], [], []]", i); 1318 "[0, port, ['libraries', '%" Pd "', 'coverage'], [], []]", i);
1319 1319
1320 Instance& service_msg = Instance::Handle(); 1320 Array& service_msg = Array::Handle();
1321 service_msg = Eval(h_lib, buf); 1321 service_msg = Eval(h_lib, buf);
1322 Service::HandleIsolateMessage(isolate, service_msg); 1322 Service::HandleIsolateMessage(isolate, service_msg);
1323 handler.HandleNextMessage(); 1323 handler.HandleNextMessage();
1324 EXPECT_STREQ( 1324 EXPECT_STREQ(
1325 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1325 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1326 "{\"source\":\"test-lib\",\"script\":{" 1326 "{\"source\":\"test-lib\",\"script\":{"
1327 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1327 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
1328 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1328 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1329 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg()); 1329 "\"kind\":\"script\"},\"hits\":[5,1,6,1]}]}", handler.msg());
1330 } 1330 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 for (i = 1; i < table->NumCids(); i++) { 1372 for (i = 1; i < table->NumCids(); i++) {
1373 if (table->HasValidClassAt(i) && table->At(i) == cls.raw()) { 1373 if (table->HasValidClassAt(i) && table->At(i) == cls.raw()) {
1374 break; 1374 break;
1375 } 1375 }
1376 } 1376 }
1377 ASSERT(i != table->NumCids()); 1377 ASSERT(i != table->NumCids());
1378 char buf[1024]; 1378 char buf[1024];
1379 OS::SNPrint(buf, sizeof(buf), 1379 OS::SNPrint(buf, sizeof(buf),
1380 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i); 1380 "[0, port, ['classes', '%" Pd "', 'coverage'], [], []]", i);
1381 1381
1382 Instance& service_msg = Instance::Handle(); 1382 Array& service_msg = Array::Handle();
1383 service_msg = Eval(h_lib, buf); 1383 service_msg = Eval(h_lib, buf);
1384 Service::HandleIsolateMessage(isolate, service_msg); 1384 Service::HandleIsolateMessage(isolate, service_msg);
1385 handler.HandleNextMessage(); 1385 handler.HandleNextMessage();
1386 EXPECT_STREQ( 1386 EXPECT_STREQ(
1387 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":[" 1387 "{\"type\":\"CodeCoverage\",\"id\":\"coverage\",\"coverage\":["
1388 "{\"source\":\"test-lib\",\"script\":{" 1388 "{\"source\":\"test-lib\",\"script\":{"
1389 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\"," 1389 "\"type\":\"@Script\",\"id\":\"scripts\\/test-lib\","
1390 "\"name\":\"test-lib\",\"user_name\":\"test-lib\"," 1390 "\"name\":\"test-lib\",\"user_name\":\"test-lib\","
1391 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", handler.msg()); 1391 "\"kind\":\"script\"},\"hits\":[5,1,7,4,8,3]}]}", handler.msg());
1392 } 1392 }
(...skipping 20 matching lines...) Expand all
1413 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); 1413 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL);
1414 EXPECT_VALID(result); 1414 EXPECT_VALID(result);
1415 1415
1416 // Build a mock message handler and wrap it in a dart port. 1416 // Build a mock message handler and wrap it in a dart port.
1417 ServiceTestMessageHandler handler; 1417 ServiceTestMessageHandler handler;
1418 Dart_Port port_id = PortMap::CreatePort(&handler); 1418 Dart_Port port_id = PortMap::CreatePort(&handler);
1419 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1419 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1420 EXPECT_VALID(port); 1420 EXPECT_VALID(port);
1421 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1421 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1422 1422
1423 Instance& service_msg = Instance::Handle(); 1423 Array& service_msg = Array::Handle();
1424 service_msg = Eval(h_lib, "[0, port, ['allocationprofile'], [], []]"); 1424 service_msg = Eval(h_lib, "[0, port, ['allocationprofile'], [], []]");
1425 Service::HandleIsolateMessage(isolate, service_msg); 1425 Service::HandleIsolateMessage(isolate, service_msg);
1426 handler.HandleNextMessage(); 1426 handler.HandleNextMessage();
1427 EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg()); 1427 EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg());
1428 1428
1429 // Too long. 1429 // Too long.
1430 service_msg = Eval(h_lib, "[0, port, ['allocationprofile', 'foo'], [], []]"); 1430 service_msg = Eval(h_lib, "[0, port, ['allocationprofile', 'foo'], [], []]");
1431 Service::HandleIsolateMessage(isolate, service_msg); 1431 Service::HandleIsolateMessage(isolate, service_msg);
1432 handler.HandleNextMessage(); 1432 handler.HandleNextMessage();
1433 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); 1433 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1480 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1480 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1481 EXPECT_VALID(lib); 1481 EXPECT_VALID(lib);
1482 1482
1483 // Build a mock message handler and wrap it in a dart port. 1483 // Build a mock message handler and wrap it in a dart port.
1484 ServiceTestMessageHandler handler; 1484 ServiceTestMessageHandler handler;
1485 Dart_Port port_id = PortMap::CreatePort(&handler); 1485 Dart_Port port_id = PortMap::CreatePort(&handler);
1486 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1486 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1487 EXPECT_VALID(port); 1487 EXPECT_VALID(port);
1488 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1488 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1489 1489
1490 Instance& service_msg = Instance::Handle(); 1490 Array& service_msg = Array::Handle();
1491 service_msg = Eval(lib, "[0, port, ['heapmap'], [], []]"); 1491 service_msg = Eval(lib, "[0, port, ['heapmap'], [], []]");
1492 Service::HandleIsolateMessage(isolate, service_msg); 1492 Service::HandleIsolateMessage(isolate, service_msg);
1493 handler.HandleNextMessage(); 1493 handler.HandleNextMessage();
1494 EXPECT_SUBSTRING("\"type\":\"HeapMap\"", handler.msg()); 1494 EXPECT_SUBSTRING("\"type\":\"HeapMap\"", handler.msg());
1495 EXPECT_SUBSTRING("\"pages\":[", handler.msg()); 1495 EXPECT_SUBSTRING("\"pages\":[", handler.msg());
1496 } 1496 }
1497 1497
1498 1498
1499 TEST_CASE(Service_Address) { 1499 TEST_CASE(Service_Address) {
1500 const char* kScript = 1500 const char* kScript =
1501 "var port;\n" // Set to our mock port by C++. 1501 "var port;\n" // Set to our mock port by C++.
1502 "\n" 1502 "\n"
1503 "main() {\n" 1503 "main() {\n"
1504 "}"; 1504 "}";
1505 1505
1506 Isolate* isolate = Isolate::Current(); 1506 Isolate* isolate = Isolate::Current();
1507 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1507 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1508 EXPECT_VALID(lib); 1508 EXPECT_VALID(lib);
1509 1509
1510 // Build a mock message handler and wrap it in a dart port. 1510 // Build a mock message handler and wrap it in a dart port.
1511 ServiceTestMessageHandler handler; 1511 ServiceTestMessageHandler handler;
1512 Dart_Port port_id = PortMap::CreatePort(&handler); 1512 Dart_Port port_id = PortMap::CreatePort(&handler);
1513 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1513 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1514 EXPECT_VALID(port); 1514 EXPECT_VALID(port);
1515 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1515 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1516 1516
1517 const String& str = String::Handle(String::New("foobar", Heap::kOld)); 1517 const String& str = String::Handle(String::New("foobar", Heap::kOld));
1518 Instance& service_msg = Instance::Handle(); 1518 Array& service_msg = Array::Handle();
1519 // Note: If we ever introduce old space compaction, this test might fail. 1519 // Note: If we ever introduce old space compaction, this test might fail.
1520 uword start_addr = RawObject::ToAddr(str.raw()); 1520 uword start_addr = RawObject::ToAddr(str.raw());
1521 // Expect to find 'str', also from internal addresses. 1521 // Expect to find 'str', also from internal addresses.
1522 for (int offset = 0; offset < kObjectAlignment; ++offset) { 1522 for (int offset = 0; offset < kObjectAlignment; ++offset) {
1523 uword addr = start_addr + offset; 1523 uword addr = start_addr + offset;
1524 char buf[1024]; 1524 char buf[1024];
1525 OS::SNPrint(buf, sizeof(buf), 1525 OS::SNPrint(buf, sizeof(buf),
1526 "[0, port, ['address', '%" Px "'], [], []]", addr); 1526 "[0, port, ['address', '%" Px "'], [], []]", addr);
1527 service_msg = Eval(lib, buf); 1527 service_msg = Eval(lib, buf);
1528 Service::HandleIsolateMessage(isolate, service_msg); 1528 Service::HandleIsolateMessage(isolate, service_msg);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1585 EXPECT_VALID(result); 1585 EXPECT_VALID(result);
1586 1586
1587 // Build a mock message handler and wrap it in a dart port. 1587 // Build a mock message handler and wrap it in a dart port.
1588 ServiceTestMessageHandler handler; 1588 ServiceTestMessageHandler handler;
1589 Dart_Port port_id = PortMap::CreatePort(&handler); 1589 Dart_Port port_id = PortMap::CreatePort(&handler);
1590 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1590 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1591 EXPECT_VALID(port); 1591 EXPECT_VALID(port);
1592 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1592 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1593 1593
1594 1594
1595 Instance& service_msg = Instance::Handle(); 1595 Array& service_msg = Array::Handle();
1596 service_msg = Eval(lib, "[0, port, ['alpha'], [], []]"); 1596 service_msg = Eval(lib, "[0, port, ['alpha'], [], []]");
1597 Service::HandleRootMessage(service_msg); 1597 Service::HandleRootMessage(service_msg);
1598 handler.HandleNextMessage(); 1598 handler.HandleNextMessage();
1599 EXPECT_STREQ("alpha", handler.msg()); 1599 EXPECT_STREQ("alpha", handler.msg());
1600 service_msg = Eval(lib, "[0, port, ['beta'], [], []]"); 1600 service_msg = Eval(lib, "[0, port, ['beta'], [], []]");
1601 Service::HandleRootMessage(service_msg); 1601 Service::HandleRootMessage(service_msg);
1602 handler.HandleNextMessage(); 1602 handler.HandleNextMessage();
1603 EXPECT_STREQ("beta", handler.msg()); 1603 EXPECT_STREQ("beta", handler.msg());
1604 } 1604 }
1605 1605
(...skipping 16 matching lines...) Expand all
1622 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); 1622 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
1623 EXPECT_VALID(result); 1623 EXPECT_VALID(result);
1624 1624
1625 // Build a mock message handler and wrap it in a dart port. 1625 // Build a mock message handler and wrap it in a dart port.
1626 ServiceTestMessageHandler handler; 1626 ServiceTestMessageHandler handler;
1627 Dart_Port port_id = PortMap::CreatePort(&handler); 1627 Dart_Port port_id = PortMap::CreatePort(&handler);
1628 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1628 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1629 EXPECT_VALID(port); 1629 EXPECT_VALID(port);
1630 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); 1630 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
1631 1631
1632 Instance& service_msg = Instance::Handle(); 1632 Array& service_msg = Array::Handle();
1633 service_msg = Eval(lib, "[0, port, ['alpha'], [], []]"); 1633 service_msg = Eval(lib, "[0, port, ['alpha'], [], []]");
1634 Service::HandleIsolateMessage(isolate, service_msg); 1634 Service::HandleIsolateMessage(isolate, service_msg);
1635 handler.HandleNextMessage(); 1635 handler.HandleNextMessage();
1636 EXPECT_STREQ("alpha", handler.msg()); 1636 EXPECT_STREQ("alpha", handler.msg());
1637 service_msg = Eval(lib, "[0, port, ['beta'], [], []]"); 1637 service_msg = Eval(lib, "[0, port, ['beta'], [], []]");
1638 Service::HandleIsolateMessage(isolate, service_msg); 1638 Service::HandleIsolateMessage(isolate, service_msg);
1639 handler.HandleNextMessage(); 1639 handler.HandleNextMessage();
1640 EXPECT_STREQ("beta", handler.msg()); 1640 EXPECT_STREQ("beta", handler.msg());
1641 } 1641 }
1642 1642
(...skipping 20 matching lines...) Expand all
1663 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); 1663 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL);
1664 EXPECT_VALID(result); 1664 EXPECT_VALID(result);
1665 1665
1666 // Build a mock message handler and wrap it in a dart port. 1666 // Build a mock message handler and wrap it in a dart port.
1667 ServiceTestMessageHandler handler; 1667 ServiceTestMessageHandler handler;
1668 Dart_Port port_id = PortMap::CreatePort(&handler); 1668 Dart_Port port_id = PortMap::CreatePort(&handler);
1669 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); 1669 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id));
1670 EXPECT_VALID(port); 1670 EXPECT_VALID(port);
1671 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); 1671 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
1672 1672
1673 Instance& service_msg = Instance::Handle(); 1673 Array& service_msg = Array::Handle();
1674 service_msg = Eval(h_lib, "[0, port, ['profile'], [], []]"); 1674 service_msg = Eval(h_lib, "[0, port, ['profile'], [], []]");
1675 Service::HandleIsolateMessage(isolate, service_msg); 1675 Service::HandleIsolateMessage(isolate, service_msg);
1676 handler.HandleNextMessage(); 1676 handler.HandleNextMessage();
1677 // Expect profile 1677 // Expect profile
1678 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg()); 1678 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg());
1679 1679
1680 service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hide']]"); 1680 service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hide']]");
1681 Service::HandleIsolateMessage(isolate, service_msg); 1681 Service::HandleIsolateMessage(isolate, service_msg);
1682 handler.HandleNextMessage(); 1682 handler.HandleNextMessage();
1683 // Expect profile 1683 // Expect profile
1684 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg()); 1684 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg());
1685 1685
1686 service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hidden']]"); 1686 service_msg = Eval(h_lib, "[0, port, ['profile'], ['tags'], ['hidden']]");
1687 Service::HandleIsolateMessage(isolate, service_msg); 1687 Service::HandleIsolateMessage(isolate, service_msg);
1688 handler.HandleNextMessage(); 1688 handler.HandleNextMessage();
1689 // Expect error. 1689 // Expect error.
1690 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); 1690 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg());
1691 } 1691 }
1692 1692
1693 #endif // !defined(TARGET_ARCH_ARM64) 1693 #endif // !defined(TARGET_ARCH_ARM64)
1694 1694
1695 } // namespace dart 1695 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698