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

Unified Diff: util/mach/exception_ports_test.cc

Issue 584223002: ExceptionPorts test: accept a port of MACH_PORT_NULL as “no handler.” (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« util/mach/exception_ports.h ('K') | « util/mach/exception_ports.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: util/mach/exception_ports_test.cc
diff --git a/util/mach/exception_ports_test.cc b/util/mach/exception_ports_test.cc
index 8a459f40dc2bd03e94adf6a065f4587faa08a257..88de265a8631c04957f7b921bace237011cccbba 100644
--- a/util/mach/exception_ports_test.cc
+++ b/util/mach/exception_ports_test.cc
@@ -44,8 +44,9 @@ using namespace crashpad::test;
// behavior matches |expect_behavior| exactly. In this case, if
// |expect_behavior| is a state-carrying behavior, the looked-up thread state
// flavor is expected to be MACHINE_THREAD_STATE, otherwise, it is expected to
-// be THREAD_STATE_NONE. If |expect_port| is MACH_PORT_NULL, no handler for
-// EXC_MASK_CRASH is expected to be found.
+// be THREAD_STATE_NONE. If |expect_port| is MACH_PORT_NULL, either no handler
+// for EXC_MASK_CRASH is expected to be found, or a handler whose port is
+// MACH_PORT_NULL is expected, with the behavior and flavor being irrelevant.
//
// A second GetExceptionPorts() lookup is also performed on a wider exception
// mask, EXC_MASK_ALL | EXC_MASK_CRASH. The EXC_MASK_CRASH handler’s existence
@@ -66,16 +67,16 @@ void TestGetExceptionPorts(const ExceptionPorts& exception_ports,
ASSERT_TRUE(
exception_ports.GetExceptionPorts(kExceptionMask, &crash_handler));
- if (expect_port != MACH_PORT_NULL) {
+ if (expect_port != MACH_PORT_NULL || !crash_handler.empty()) {
ASSERT_EQ(1u, crash_handler.size());
base::mac::ScopedMachSendRight port_owner(crash_handler[0].port);
EXPECT_EQ(kExceptionMask, crash_handler[0].mask);
EXPECT_EQ(expect_port, crash_handler[0].port);
- EXPECT_EQ(expect_behavior, crash_handler[0].behavior);
- EXPECT_EQ(expect_flavor, crash_handler[0].flavor);
- } else {
- EXPECT_TRUE(crash_handler.empty());
+ if (expect_port != MACH_PORT_NULL) {
+ EXPECT_EQ(expect_behavior, crash_handler[0].behavior);
+ EXPECT_EQ(expect_flavor, crash_handler[0].flavor);
+ }
}
std::vector<ExceptionPorts::ExceptionHandler> handlers;
@@ -88,11 +89,16 @@ void TestGetExceptionPorts(const ExceptionPorts& exception_ports,
if ((handler.mask & kExceptionMask) != 0) {
base::mac::ScopedMachSendRight port_owner(handler.port);
- EXPECT_FALSE(found);
- found = true;
+ if (handler.port != MACH_PORT_NULL) {
+ EXPECT_FALSE(found);
+ found = true;
+ }
+
EXPECT_EQ(expect_port, handler.port);
- EXPECT_EQ(expect_behavior, handler.behavior);
- EXPECT_EQ(expect_flavor, handler.flavor);
+ if (expect_port != MACH_PORT_NULL) {
+ EXPECT_EQ(expect_behavior, handler.behavior);
+ EXPECT_EQ(expect_flavor, handler.flavor);
+ }
}
}
« util/mach/exception_ports.h ('K') | « util/mach/exception_ports.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698