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

Side by Side Diff: mojo/dart/embedder/test/dart_to_cpp_tests.cc

Issue 1411843005: Dart: Removes C++ set for closing handles on an unhandled exception. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 1 month 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 | « mojo/dart/embedder/mojo_natives.cc ('k') | mojo/dart/embedder/test/run_dart_tests.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 // join while handles are still open, until the C++ side closes them. 263 // join while handles are still open, until the C++ side closes them.
264 base::Thread dart_thread("dart"); 264 base::Thread dart_thread("dart");
265 cpp_side->set_run_loop(&run_loop_); 265 cpp_side->set_run_loop(&run_loop_);
266 return RunWithDartOnThread(&dart_thread, test, cpp_side); 266 return RunWithDartOnThread(&dart_thread, test, cpp_side);
267 } 267 }
268 268
269 private: 269 private:
270 base::MessageLoop loop; 270 base::MessageLoop loop;
271 base::RunLoop run_loop_; 271 base::RunLoop run_loop_;
272 272
273 static void UnhandledExceptionCallback(bool* exception, Dart_Handle error) { 273 static void UnhandledExceptionCallback(bool* exception,
274 int64_t* closed_handles,
275 Dart_Handle error,
276 int64_t count) {
274 *exception = true; 277 *exception = true;
278 *closed_handles = count;
275 } 279 }
276 280
277 static bool GenerateEntropy(uint8_t* buffer, intptr_t length) { 281 static bool GenerateEntropy(uint8_t* buffer, intptr_t length) {
278 base::RandBytes(static_cast<void*>(buffer), length); 282 base::RandBytes(static_cast<void*>(buffer), length);
279 return true; 283 return true;
280 } 284 }
281 285
282 static void InitializeDartConfig(DartControllerConfig* config, 286 static void InitializeDartConfig(DartControllerConfig* config,
283 const std::string& test, 287 const std::string& test,
284 MojoHandle handle, 288 MojoHandle handle,
285 const char** arguments, 289 const char** arguments,
286 int arguments_count, 290 int arguments_count,
287 bool* unhandled_exception, 291 bool* unhandled_exception,
292 int64_t* closed_handles,
288 char** error) { 293 char** error) {
289 base::FilePath path; 294 base::FilePath path;
290 PathService::Get(base::DIR_SOURCE_ROOT, &path); 295 PathService::Get(base::DIR_SOURCE_ROOT, &path);
291 path = path.AppendASCII("mojo") 296 path = path.AppendASCII("mojo")
292 .AppendASCII("dart") 297 .AppendASCII("dart")
293 .AppendASCII("embedder") 298 .AppendASCII("embedder")
294 .AppendASCII("test") 299 .AppendASCII("test")
295 .AppendASCII(test); 300 .AppendASCII(test);
296 301
297 // Setup the package root. 302 // Setup the package root.
298 base::FilePath package_root; 303 base::FilePath package_root;
299 PathService::Get(base::DIR_EXE, &package_root); 304 PathService::Get(base::DIR_EXE, &package_root);
300 package_root = package_root.AppendASCII("gen") 305 package_root = package_root.AppendASCII("gen")
301 .AppendASCII("dart-pkg") 306 .AppendASCII("dart-pkg")
302 .AppendASCII("packages"); 307 .AppendASCII("packages");
303 308
304 309
305 config->strict_compilation = true; 310 config->strict_compilation = true;
306 config->script_uri = path.AsUTF8Unsafe(); 311 config->script_uri = path.AsUTF8Unsafe();
307 config->package_root = package_root.AsUTF8Unsafe(); 312 config->package_root = package_root.AsUTF8Unsafe();
308 config->callbacks.exception = 313 config->callbacks.exception = base::Bind(
309 base::Bind(&UnhandledExceptionCallback, unhandled_exception); 314 &UnhandledExceptionCallback, unhandled_exception, closed_handles);
310 config->entropy = GenerateEntropy; 315 config->entropy = GenerateEntropy;
311 config->handle = handle; 316 config->handle = handle;
312 config->SetVmFlags(arguments, arguments_count); 317 config->SetVmFlags(arguments, arguments_count);
313 config->error = error; 318 config->error = error;
314 } 319 }
315 320
316 static void RunDartSide(const DartControllerConfig& config) { 321 static void RunDartSide(const DartControllerConfig& config) {
317 DartController::RunSingleDartScript(config); 322 DartController::RunSingleDartScript(config);
318 } 323 }
319 324
320 bool RunWithDartOnThread(base::Thread* dart_thread, 325 bool RunWithDartOnThread(base::Thread* dart_thread,
321 const std::string& test, 326 const std::string& test,
322 CppSideConnection* cpp_side) { 327 CppSideConnection* cpp_side) {
323 dart_to_cpp::DartSidePtr dart_side_ptr; 328 dart_to_cpp::DartSidePtr dart_side_ptr;
324 auto dart_side_request = GetProxy(&dart_side_ptr); 329 auto dart_side_request = GetProxy(&dart_side_ptr);
325 330
326 dart_to_cpp::CppSidePtr cpp_side_ptr; 331 dart_to_cpp::CppSidePtr cpp_side_ptr;
327 cpp_side->Bind(GetProxy(&cpp_side_ptr)); 332 cpp_side->Bind(GetProxy(&cpp_side_ptr));
328 dart_side_ptr->SetClient(cpp_side_ptr.Pass()); 333 dart_side_ptr->SetClient(cpp_side_ptr.Pass());
329 334
330 dart_side_ptr.internal_state()->router_for_testing()->EnableTestingMode(); 335 dart_side_ptr.internal_state()->router_for_testing()->EnableTestingMode();
331 336
332 cpp_side->set_dart_side(dart_side_ptr.get()); 337 cpp_side->set_dart_side(dart_side_ptr.get());
333 338
334 DartControllerConfig config; 339 DartControllerConfig config;
335 char* error; 340 char* error;
336 bool unhandled_exception = false; 341 bool unhandled_exception = false;
342 int64_t closed_handles;
337 InitializeDartConfig( 343 InitializeDartConfig(
338 &config, 344 &config, test, dart_side_request.PassMessagePipe().release().value(),
339 test, 345 nullptr, 0, &unhandled_exception, &closed_handles, &error);
340 dart_side_request.PassMessagePipe().release().value(),
341 nullptr,
342 0,
343 &unhandled_exception,
344 &error);
345 346
346 dart_thread->Start(); 347 dart_thread->Start();
347 dart_thread->message_loop()->PostTask(FROM_HERE, 348 dart_thread->message_loop()->PostTask(FROM_HERE,
348 base::Bind(&RunDartSide, base::ConstRef(config))); 349 base::Bind(&RunDartSide, base::ConstRef(config)));
349 350
350 run_loop_.Run(); 351 run_loop_.Run();
351 return unhandled_exception; 352 return unhandled_exception;
352 } 353 }
353 354
354 DISALLOW_COPY_AND_ASSIGN(DartToCppTest); 355 DISALLOW_COPY_AND_ASSIGN(DartToCppTest);
(...skipping 10 matching lines...) Expand all
365 TEST_F(DartToCppTest, Echo) { 366 TEST_F(DartToCppTest, Echo) {
366 EchoCppSideConnection cpp_side_connection; 367 EchoCppSideConnection cpp_side_connection;
367 bool unhandled_exception = 368 bool unhandled_exception =
368 RunTest("dart_to_cpp_tests.dart", &cpp_side_connection); 369 RunTest("dart_to_cpp_tests.dart", &cpp_side_connection);
369 EXPECT_TRUE(cpp_side_connection.DidSucceed()); 370 EXPECT_TRUE(cpp_side_connection.DidSucceed());
370 EXPECT_FALSE(unhandled_exception); 371 EXPECT_FALSE(unhandled_exception);
371 } 372 }
372 373
373 } // namespace dart 374 } // namespace dart
374 } // namespace mojo 375 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/dart/embedder/mojo_natives.cc ('k') | mojo/dart/embedder/test/run_dart_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698