| 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, |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
| 13 // limitations under the License. | 13 // limitations under the License. |
| 14 | 14 |
| 15 #include "util/mach/exc_client_variants.h" | 15 #include "util/mach/exc_client_variants.h" |
| 16 | 16 |
| 17 #include <mach/mach.h> | 17 #include <mach/mach.h> |
| 18 #include <pthread.h> | 18 #include <pthread.h> |
| 19 #include <string.h> | 19 #include <string.h> |
| 20 | 20 |
| 21 #include "base/basictypes.h" | 21 #include "base/basictypes.h" |
| 22 #include "base/strings/stringprintf.h" | 22 #include "base/strings/stringprintf.h" |
| 23 #include "gtest/gtest.h" | 23 #include "gtest/gtest.h" |
| 24 #include "util/mach/exc_server_variants.h" | 24 #include "util/mach/exc_server_variants.h" |
| 25 #include "util/mach/exception_behaviors.h" | 25 #include "util/mach/exception_behaviors.h" |
| 26 #include "util/mach/mach_extensions.h" | 26 #include "util/mach/mach_extensions.h" |
| 27 #include "util/mach/mach_message.h" |
| 28 #include "util/mach/mach_message_server.h" |
| 27 #include "util/test/mac/mach_errors.h" | 29 #include "util/test/mac/mach_errors.h" |
| 28 #include "util/test/mac/mach_multiprocess.h" | 30 #include "util/test/mac/mach_multiprocess.h" |
| 29 | 31 |
| 30 namespace crashpad { | 32 namespace crashpad { |
| 31 namespace test { | 33 namespace test { |
| 32 namespace { | 34 namespace { |
| 33 | 35 |
| 34 class TestExcClientVariants : public MachMultiprocess, | 36 class TestExcClientVariants : public MachMultiprocess, |
| 35 public UniversalMachExcServer::Interface { | 37 public UniversalMachExcServer::Interface { |
| 36 public: | 38 public: |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 // MachMultiprocess: | 136 // MachMultiprocess: |
| 135 | 137 |
| 136 void MachMultiprocessParent() override { | 138 void MachMultiprocessParent() override { |
| 137 UniversalMachExcServer universal_mach_exc_server(this); | 139 UniversalMachExcServer universal_mach_exc_server(this); |
| 138 | 140 |
| 139 kern_return_t kr = | 141 kern_return_t kr = |
| 140 MachMessageServer::Run(&universal_mach_exc_server, | 142 MachMessageServer::Run(&universal_mach_exc_server, |
| 141 LocalPort(), | 143 LocalPort(), |
| 142 MACH_MSG_OPTION_NONE, | 144 MACH_MSG_OPTION_NONE, |
| 143 MachMessageServer::kOneShot, | 145 MachMessageServer::kOneShot, |
| 144 MachMessageServer::kBlocking, | |
| 145 MachMessageServer::kReceiveLargeError, | 146 MachMessageServer::kReceiveLargeError, |
| 146 0); | 147 kMachMessageTimeoutWaitIndefinitely); |
| 147 EXPECT_EQ(KERN_SUCCESS, kr) | 148 EXPECT_EQ(KERN_SUCCESS, kr) |
| 148 << MachErrorMessage(kr, "MachMessageServer::Run"); | 149 << MachErrorMessage(kr, "MachMessageServer::Run"); |
| 149 | 150 |
| 150 EXPECT_TRUE(handled_); | 151 EXPECT_TRUE(handled_); |
| 151 } | 152 } |
| 152 | 153 |
| 153 void MachMultiprocessChild() override { | 154 void MachMultiprocessChild() override { |
| 154 const exception_type_t exception = exception_; | 155 const exception_type_t exception = exception_; |
| 155 const mach_exception_data_type_t code[] = { | 156 const mach_exception_data_type_t code[] = { |
| 156 exception_code_, | 157 exception_code_, |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 | 286 |
| 286 TestExcClientVariants test_exc_client_variants(behavior, true); | 287 TestExcClientVariants test_exc_client_variants(behavior, true); |
| 287 test_exc_client_variants.Run(); | 288 test_exc_client_variants.Run(); |
| 288 } | 289 } |
| 289 } | 290 } |
| 290 } | 291 } |
| 291 | 292 |
| 292 } // namespace | 293 } // namespace |
| 293 } // namespace test | 294 } // namespace test |
| 294 } // namespace crashpad | 295 } // namespace crashpad |
| OLD | NEW |