OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 kern_return_t kr = task_threads(ChildTask(), &threads, &thread_count); | 369 kern_return_t kr = task_threads(ChildTask(), &threads, &thread_count); |
370 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "task_threads"); | 370 ASSERT_EQ(KERN_SUCCESS, kr) << MachErrorMessage(kr, "task_threads"); |
371 | 371 |
372 ScopedForbidReturn threads_need_owners; | 372 ScopedForbidReturn threads_need_owners; |
373 ASSERT_EQ(2u, thread_count); | 373 ASSERT_EQ(2u, thread_count); |
374 base::mac::ScopedMachSendRight main_thread(threads[0]); | 374 base::mac::ScopedMachSendRight main_thread(threads[0]); |
375 base::mac::ScopedMachSendRight other_thread(threads[1]); | 375 base::mac::ScopedMachSendRight other_thread(threads[1]); |
376 threads_need_owners.Disarm(); | 376 threads_need_owners.Disarm(); |
377 | 377 |
378 ExceptionPorts main_thread_ports(ExceptionPorts::kTargetTypeThread, | 378 ExceptionPorts main_thread_ports(ExceptionPorts::kTargetTypeThread, |
379 main_thread); | 379 main_thread.get()); |
380 ExceptionPorts other_thread_ports(ExceptionPorts::kTargetTypeThread, | 380 ExceptionPorts other_thread_ports(ExceptionPorts::kTargetTypeThread, |
381 other_thread); | 381 other_thread.get()); |
382 EXPECT_STREQ("thread", main_thread_ports.TargetTypeName()); | 382 EXPECT_STREQ("thread", main_thread_ports.TargetTypeName()); |
383 EXPECT_STREQ("thread", other_thread_ports.TargetTypeName()); | 383 EXPECT_STREQ("thread", other_thread_ports.TargetTypeName()); |
384 | 384 |
385 if (set_type_ == kSetOutOfProcess) { | 385 if (set_type_ == kSetOutOfProcess) { |
386 // Test ExceptionPorts::SetExceptionPorts() being called from | 386 // Test ExceptionPorts::SetExceptionPorts() being called from |
387 // out-of-process. | 387 // out-of-process. |
388 // | 388 // |
389 // local_port is only a receive right, but a send right is needed for | 389 // local_port is only a receive right, but a send right is needed for |
390 // ExceptionPorts::SetExceptionPort(). Make a send right, which can be | 390 // ExceptionPorts::SetExceptionPort(). Make a send right, which can be |
391 // deallocated once the calls to ExceptionPorts::SetExceptionPort() are | 391 // deallocated once the calls to ExceptionPorts::SetExceptionPort() are |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 // make sure that TargetTypeName() returns the right string, and that the | 579 // make sure that TargetTypeName() returns the right string, and that the |
580 // underlying host_get_exception_ports() function appears to be called by | 580 // underlying host_get_exception_ports() function appears to be called by |
581 // looking for a KERN_INVALID_ARGUMENT return value. Or, on the off chance | 581 // looking for a KERN_INVALID_ARGUMENT return value. Or, on the off chance |
582 // that the test is being run as root, just look for KERN_SUCCESS. | 582 // that the test is being run as root, just look for KERN_SUCCESS. |
583 // host_set_exception_ports() is not tested, because if the test were running | 583 // host_set_exception_ports() is not tested, because if the test were running |
584 // as root and the call succeeded, it would have global effects. | 584 // as root and the call succeeded, it would have global effects. |
585 | 585 |
586 const bool expect_success = geteuid() == 0; | 586 const bool expect_success = geteuid() == 0; |
587 | 587 |
588 base::mac::ScopedMachSendRight host(mach_host_self()); | 588 base::mac::ScopedMachSendRight host(mach_host_self()); |
589 ExceptionPorts explicit_host_ports(ExceptionPorts::kTargetTypeHost, host); | 589 ExceptionPorts explicit_host_ports(ExceptionPorts::kTargetTypeHost, |
| 590 host.get()); |
590 EXPECT_STREQ("host", explicit_host_ports.TargetTypeName()); | 591 EXPECT_STREQ("host", explicit_host_ports.TargetTypeName()); |
591 | 592 |
592 ExceptionPorts::ExceptionHandlerVector explicit_handlers; | 593 ExceptionPorts::ExceptionHandlerVector explicit_handlers; |
593 bool rv = | 594 bool rv = |
594 explicit_host_ports.GetExceptionPorts(ExcMaskValid(), &explicit_handlers); | 595 explicit_host_ports.GetExceptionPorts(ExcMaskValid(), &explicit_handlers); |
595 EXPECT_EQ(expect_success, rv); | 596 EXPECT_EQ(expect_success, rv); |
596 | 597 |
597 ExceptionPorts implicit_host_ports(ExceptionPorts::kTargetTypeHost, | 598 ExceptionPorts implicit_host_ports(ExceptionPorts::kTargetTypeHost, |
598 HOST_NULL); | 599 HOST_NULL); |
599 EXPECT_STREQ("host", implicit_host_ports.TargetTypeName()); | 600 EXPECT_STREQ("host", implicit_host_ports.TargetTypeName()); |
600 | 601 |
601 ExceptionPorts::ExceptionHandlerVector implicit_handlers; | 602 ExceptionPorts::ExceptionHandlerVector implicit_handlers; |
602 rv = | 603 rv = |
603 implicit_host_ports.GetExceptionPorts(ExcMaskValid(), &implicit_handlers); | 604 implicit_host_ports.GetExceptionPorts(ExcMaskValid(), &implicit_handlers); |
604 EXPECT_EQ(expect_success, rv); | 605 EXPECT_EQ(expect_success, rv); |
605 | 606 |
606 EXPECT_EQ(explicit_handlers.size(), implicit_handlers.size()); | 607 EXPECT_EQ(explicit_handlers.size(), implicit_handlers.size()); |
607 } | 608 } |
608 | 609 |
609 } // namespace | 610 } // namespace |
610 } // namespace test | 611 } // namespace test |
611 } // namespace crashpad | 612 } // namespace crashpad |
OLD | NEW |