| Index: util/mach/exc_server_variants_test.cc
|
| diff --git a/util/mach/exc_server_variants_test.cc b/util/mach/exc_server_variants_test.cc
|
| index 221013f71f03640d7700f86cd36c93b3a36adcf9..84a65e2182c24a6754bb8183c0af200cc8a1e7de 100644
|
| --- a/util/mach/exc_server_variants_test.cc
|
| +++ b/util/mach/exc_server_variants_test.cc
|
| @@ -449,7 +449,7 @@ struct BadIDErrorReply : public mig_reply_error_t {
|
| }
|
| };
|
|
|
| -class MockUniversalMachExcServer : public UniversalMachExcServer {
|
| +class MockUniversalMachExcServer : public UniversalMachExcServer::Interface {
|
| public:
|
| struct ConstExceptionCodes {
|
| const mach_exception_data_type_t* code;
|
| @@ -464,6 +464,8 @@ class MockUniversalMachExcServer : public UniversalMachExcServer {
|
| mach_msg_type_number_t* state_count;
|
| };
|
|
|
| + // UniversalMachExcServer::Interface:
|
| +
|
| // CatchMachException is the method to mock, but it has 13 parameters, and
|
| // gmock can only mock methods with up to 10 parameters. Coalesce some related
|
| // parameters together into structs, and call a mocked method.
|
| @@ -580,12 +582,15 @@ TEST(ExcServerVariants, MockExceptionRaise) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| ExceptionRaiseRequest request;
|
| - EXPECT_LE(request.Head.msgh_size, server.MachMessageServerRequestSize());
|
| + EXPECT_LE(request.Head.msgh_size,
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| ExceptionRaiseReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| const exception_behavior_t kExceptionBehavior = EXCEPTION_DEFAULT;
|
|
|
| @@ -605,7 +610,7 @@ TEST(ExcServerVariants, MockExceptionRaise) {
|
| .RetiresOnSaturation();
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_TRUE(server.MachMessageServerFunction(
|
| + EXPECT_TRUE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -618,12 +623,15 @@ TEST(ExcServerVariants, MockExceptionRaiseState) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| ExceptionRaiseStateRequest request;
|
| - EXPECT_LE(request.Head.msgh_size, server.MachMessageServerRequestSize());
|
| + EXPECT_LE(request.Head.msgh_size,
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| ExceptionRaiseStateReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| const exception_behavior_t kExceptionBehavior = EXCEPTION_STATE;
|
|
|
| @@ -644,7 +652,7 @@ TEST(ExcServerVariants, MockExceptionRaiseState) {
|
| .RetiresOnSaturation();
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_TRUE(server.MachMessageServerFunction(
|
| + EXPECT_TRUE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -660,12 +668,15 @@ TEST(ExcServerVariants, MockExceptionRaiseStateIdentity) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| ExceptionRaiseStateIdentityRequest request;
|
| - EXPECT_LE(request.Head.msgh_size, server.MachMessageServerRequestSize());
|
| + EXPECT_LE(request.Head.msgh_size,
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| ExceptionRaiseStateIdentityReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| const exception_behavior_t kExceptionBehavior = EXCEPTION_STATE_IDENTITY;
|
|
|
| @@ -686,7 +697,7 @@ TEST(ExcServerVariants, MockExceptionRaiseStateIdentity) {
|
| .RetiresOnSaturation();
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_TRUE(server.MachMessageServerFunction(
|
| + EXPECT_TRUE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -699,12 +710,15 @@ TEST(ExcServerVariants, MockMachExceptionRaise) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| MachExceptionRaiseRequest request;
|
| - EXPECT_LE(request.Head.msgh_size, server.MachMessageServerRequestSize());
|
| + EXPECT_LE(request.Head.msgh_size,
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| MachExceptionRaiseReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| const exception_behavior_t kExceptionBehavior =
|
| EXCEPTION_DEFAULT | MACH_EXCEPTION_CODES;
|
| @@ -726,7 +740,7 @@ TEST(ExcServerVariants, MockMachExceptionRaise) {
|
| .RetiresOnSaturation();
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_TRUE(server.MachMessageServerFunction(
|
| + EXPECT_TRUE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -739,12 +753,15 @@ TEST(ExcServerVariants, MockMachExceptionRaiseState) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| MachExceptionRaiseStateRequest request;
|
| - EXPECT_LE(request.Head.msgh_size, server.MachMessageServerRequestSize());
|
| + EXPECT_LE(request.Head.msgh_size,
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| MachExceptionRaiseStateReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| const exception_behavior_t kExceptionBehavior =
|
| EXCEPTION_STATE | MACH_EXCEPTION_CODES;
|
| @@ -766,7 +783,7 @@ TEST(ExcServerVariants, MockMachExceptionRaiseState) {
|
| .RetiresOnSaturation();
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_TRUE(server.MachMessageServerFunction(
|
| + EXPECT_TRUE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -782,12 +799,15 @@ TEST(ExcServerVariants, MockMachExceptionRaiseStateIdentity) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| MachExceptionRaiseStateIdentityRequest request;
|
| - EXPECT_LE(request.Head.msgh_size, server.MachMessageServerRequestSize());
|
| + EXPECT_LE(request.Head.msgh_size,
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| MachExceptionRaiseStateIdentityReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| const exception_behavior_t kExceptionBehavior =
|
| EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES;
|
| @@ -809,7 +829,7 @@ TEST(ExcServerVariants, MockMachExceptionRaiseStateIdentity) {
|
| .RetiresOnSaturation();
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_TRUE(server.MachMessageServerFunction(
|
| + EXPECT_TRUE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -822,6 +842,7 @@ TEST(ExcServerVariants, MockUnknownID) {
|
| ScopedDefaultValue<kern_return_t> default_kern_return_t(KERN_FAILURE);
|
|
|
| MockUniversalMachExcServer server;
|
| + UniversalMachExcServer universal_mach_exc_server(&server);
|
|
|
| // Make sure that a message with an unknown ID is handled appropriately.
|
| // UniversalMachExcServer should not dispatch the message to
|
| @@ -862,13 +883,15 @@ TEST(ExcServerVariants, MockUnknownID) {
|
| SCOPED_TRACE(base::StringPrintf("unknown id %d", id));
|
|
|
| InvalidRequest request(id);
|
| - EXPECT_LE(sizeof(request), server.MachMessageServerRequestSize());
|
| + EXPECT_LE(sizeof(request),
|
| + universal_mach_exc_server.MachMessageServerRequestSize());
|
|
|
| BadIDErrorReply reply;
|
| - EXPECT_LE(sizeof(reply), server.MachMessageServerReplySize());
|
| + EXPECT_LE(sizeof(reply),
|
| + universal_mach_exc_server.MachMessageServerReplySize());
|
|
|
| bool destroy_complex_request = false;
|
| - EXPECT_FALSE(server.MachMessageServerFunction(
|
| + EXPECT_FALSE(universal_mach_exc_server.MachMessageServerFunction(
|
| reinterpret_cast<mach_msg_header_t*>(&request),
|
| reinterpret_cast<mach_msg_header_t*>(&reply),
|
| &destroy_complex_request));
|
| @@ -883,20 +906,20 @@ TEST(ExcServerVariants, MockUnknownID) {
|
| }
|
| }
|
|
|
| -class TestExcServerVariants : public UniversalMachExcServer,
|
| - public MachMultiprocess {
|
| +class TestExcServerVariants : public MachMultiprocess,
|
| + public UniversalMachExcServer::Interface {
|
| public:
|
| TestExcServerVariants(exception_behavior_t behavior,
|
| thread_state_flavor_t flavor,
|
| mach_msg_type_number_t state_count)
|
| - : UniversalMachExcServer(),
|
| - MachMultiprocess(),
|
| + : MachMultiprocess(),
|
| + UniversalMachExcServer::Interface(),
|
| behavior_(behavior),
|
| flavor_(flavor),
|
| state_count_(state_count),
|
| handled_(false) {}
|
|
|
| - // UniversalMachExcServer:
|
| + // UniversalMachExcServer::Interface:
|
|
|
| virtual kern_return_t CatchMachException(
|
| exception_behavior_t behavior,
|
| @@ -970,8 +993,10 @@ class TestExcServerVariants : public UniversalMachExcServer,
|
| // MachMultiprocess:
|
|
|
| void MachMultiprocessParent() override {
|
| + UniversalMachExcServer universal_mach_exc_server(this);
|
| +
|
| kern_return_t kr =
|
| - MachMessageServer::Run(this,
|
| + MachMessageServer::Run(&universal_mach_exc_server,
|
| LocalPort(),
|
| kMachMessageOptions,
|
| MachMessageServer::kOneShot,
|
|
|