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 |