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

Side by Side Diff: util/mach/exc_server_variants_test.cc

Issue 755323002: ExcServerVariants test: make the mock test port dispositions reflect reality (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 6 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 implicit_cast<mach_exception_data_type_t>(0xfedcba9876543210), 58 implicit_cast<mach_exception_data_type_t>(0xfedcba9876543210),
59 }; 59 };
60 60
61 const thread_state_flavor_t kThreadStateFlavor = MACHINE_THREAD_STATE; 61 const thread_state_flavor_t kThreadStateFlavor = MACHINE_THREAD_STATE;
62 const mach_msg_type_number_t kThreadStateFlavorCount = 62 const mach_msg_type_number_t kThreadStateFlavorCount =
63 MACHINE_THREAD_STATE_COUNT; 63 MACHINE_THREAD_STATE_COUNT;
64 64
65 void InitializeMachMsgPortDescriptor(mach_msg_port_descriptor_t* descriptor, 65 void InitializeMachMsgPortDescriptor(mach_msg_port_descriptor_t* descriptor,
66 mach_port_t port) { 66 mach_port_t port) {
67 descriptor->name = port; 67 descriptor->name = port;
68 descriptor->disposition = MACH_MSG_TYPE_MOVE_SEND; 68 descriptor->disposition = MACH_MSG_TYPE_PORT_SEND;
69 descriptor->type = MACH_MSG_PORT_DESCRIPTOR; 69 descriptor->type = MACH_MSG_PORT_DESCRIPTOR;
70 } 70 }
71 71
72 // The definitions of the request and reply structures from mach_exc.h aren’t 72 // The definitions of the request and reply structures from mach_exc.h aren’t
73 // available here. They need custom initialization code, and the reply 73 // available here. They need custom initialization code, and the reply
74 // structures need verification code too, so duplicate the expected definitions 74 // structures need verification code too, so duplicate the expected definitions
75 // of the structures from both exc.h and mach_exc.h here in this file, and 75 // of the structures from both exc.h and mach_exc.h here in this file, and
76 // provide the initialization and verification code as methods in true 76 // provide the initialization and verification code as methods in true
77 // object-oriented fashion. 77 // object-oriented fashion.
78 78
79 struct __attribute__((packed, aligned(4))) ExceptionRaiseRequest { 79 struct __attribute__((packed, aligned(4))) ExceptionRaiseRequest {
80 mach_msg_header_t Head; 80 mach_msg_header_t Head;
81 mach_msg_body_t msgh_body; 81 mach_msg_body_t msgh_body;
82 mach_msg_port_descriptor_t thread; 82 mach_msg_port_descriptor_t thread;
83 mach_msg_port_descriptor_t task; 83 mach_msg_port_descriptor_t task;
84 NDR_record_t NDR; 84 NDR_record_t NDR;
85 exception_type_t exception; 85 exception_type_t exception;
86 mach_msg_type_number_t codeCnt; 86 mach_msg_type_number_t codeCnt;
87 integer_t code[2]; 87 integer_t code[2];
88 88
89 void InitializeForTesting() { 89 void InitializeForTesting() {
90 memset(this, 0xa5, sizeof(*this)); 90 memset(this, 0xa5, sizeof(*this));
91 Head.msgh_bits = 91 Head.msgh_bits =
92 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE) | 92 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND) |
93 MACH_MSGH_BITS_COMPLEX; 93 MACH_MSGH_BITS_COMPLEX;
94 Head.msgh_size = sizeof(*this); 94 Head.msgh_size = sizeof(*this);
95 Head.msgh_remote_port = kClientRemotePort; 95 Head.msgh_remote_port = kClientRemotePort;
96 Head.msgh_local_port = kServerLocalPort; 96 Head.msgh_local_port = kServerLocalPort;
97 Head.msgh_id = 2401; 97 Head.msgh_id = 2401;
98 msgh_body.msgh_descriptor_count = 2; 98 msgh_body.msgh_descriptor_count = 2;
99 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort); 99 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort);
100 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort); 100 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort);
101 NDR = NDR_record; 101 NDR = NDR_record;
102 exception = kExceptionType; 102 exception = kExceptionType;
(...skipping 12 matching lines...) Expand all
115 memset(this, 0x5a, sizeof(*this)); 115 memset(this, 0x5a, sizeof(*this));
116 RetCode = KERN_FAILURE; 116 RetCode = KERN_FAILURE;
117 } 117 }
118 118
119 // Verify accepts a |behavior| parameter because the same message format and 119 // Verify accepts a |behavior| parameter because the same message format and
120 // verification function is used for ExceptionRaiseReply and 120 // verification function is used for ExceptionRaiseReply and
121 // MachExceptionRaiseReply. Knowing which behavior is expected allows the 121 // MachExceptionRaiseReply. Knowing which behavior is expected allows the
122 // message ID to be checked. 122 // message ID to be checked.
123 void Verify(exception_behavior_t behavior) { 123 void Verify(exception_behavior_t behavior) {
124 EXPECT_EQ(implicit_cast<mach_msg_bits_t>( 124 EXPECT_EQ(implicit_cast<mach_msg_bits_t>(
125 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)), 125 MACH_MSGH_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE, 0)),
126 Head.msgh_bits); 126 Head.msgh_bits);
127 EXPECT_EQ(sizeof(*this), Head.msgh_size); 127 EXPECT_EQ(sizeof(*this), Head.msgh_size);
128 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port); 128 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port);
129 EXPECT_EQ(kMachPortNull, Head.msgh_local_port); 129 EXPECT_EQ(kMachPortNull, Head.msgh_local_port);
130 switch (behavior) { 130 switch (behavior) {
131 case EXCEPTION_DEFAULT: 131 case EXCEPTION_DEFAULT:
132 EXPECT_EQ(2501, Head.msgh_id); 132 EXPECT_EQ(2501, Head.msgh_id);
133 break; 133 break;
134 case EXCEPTION_DEFAULT | kMachExceptionCodes: 134 case EXCEPTION_DEFAULT | kMachExceptionCodes:
135 EXPECT_EQ(2505, Head.msgh_id); 135 EXPECT_EQ(2505, Head.msgh_id);
(...skipping 14 matching lines...) Expand all
150 exception_type_t exception; 150 exception_type_t exception;
151 mach_msg_type_number_t codeCnt; 151 mach_msg_type_number_t codeCnt;
152 integer_t code[2]; 152 integer_t code[2];
153 int flavor; 153 int flavor;
154 mach_msg_type_number_t old_stateCnt; 154 mach_msg_type_number_t old_stateCnt;
155 natural_t old_state[THREAD_STATE_MAX]; 155 natural_t old_state[THREAD_STATE_MAX];
156 156
157 void InitializeForTesting() { 157 void InitializeForTesting() {
158 memset(this, 0xa5, sizeof(*this)); 158 memset(this, 0xa5, sizeof(*this));
159 Head.msgh_bits = 159 Head.msgh_bits =
160 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE); 160 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND);
161 Head.msgh_size = sizeof(*this); 161 Head.msgh_size = sizeof(*this);
162 Head.msgh_remote_port = kClientRemotePort; 162 Head.msgh_remote_port = kClientRemotePort;
163 Head.msgh_local_port = kServerLocalPort; 163 Head.msgh_local_port = kServerLocalPort;
164 Head.msgh_id = 2402; 164 Head.msgh_id = 2402;
165 NDR = NDR_record; 165 NDR = NDR_record;
166 exception = kExceptionType; 166 exception = kExceptionType;
167 codeCnt = 2; 167 codeCnt = 2;
168 code[0] = kTestExceptonCodes[0]; 168 code[0] = kTestExceptonCodes[0];
169 code[1] = kTestExceptonCodes[1]; 169 code[1] = kTestExceptonCodes[1];
170 flavor = kThreadStateFlavor; 170 flavor = kThreadStateFlavor;
(...skipping 18 matching lines...) Expand all
189 RetCode = KERN_FAILURE; 189 RetCode = KERN_FAILURE;
190 } 190 }
191 191
192 // Verify accepts a |behavior| parameter because the same message format and 192 // Verify accepts a |behavior| parameter because the same message format and
193 // verification function is used for ExceptionRaiseStateReply, 193 // verification function is used for ExceptionRaiseStateReply,
194 // ExceptionRaiseStateIdentityReply, MachExceptionRaiseStateReply, and 194 // ExceptionRaiseStateIdentityReply, MachExceptionRaiseStateReply, and
195 // MachExceptionRaiseStateIdentityReply. Knowing which behavior is expected 195 // MachExceptionRaiseStateIdentityReply. Knowing which behavior is expected
196 // allows the message ID to be checked. 196 // allows the message ID to be checked.
197 void Verify(exception_behavior_t behavior) { 197 void Verify(exception_behavior_t behavior) {
198 EXPECT_EQ(implicit_cast<mach_msg_bits_t>( 198 EXPECT_EQ(implicit_cast<mach_msg_bits_t>(
199 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)), 199 MACH_MSGH_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE, 0)),
200 Head.msgh_bits); 200 Head.msgh_bits);
201 EXPECT_EQ(sizeof(*this), Head.msgh_size); 201 EXPECT_EQ(sizeof(*this), Head.msgh_size);
202 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port); 202 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port);
203 EXPECT_EQ(kMachPortNull, Head.msgh_local_port); 203 EXPECT_EQ(kMachPortNull, Head.msgh_local_port);
204 switch (behavior) { 204 switch (behavior) {
205 case EXCEPTION_STATE: 205 case EXCEPTION_STATE:
206 EXPECT_EQ(2502, Head.msgh_id); 206 EXPECT_EQ(2502, Head.msgh_id);
207 break; 207 break;
208 case EXCEPTION_STATE_IDENTITY: 208 case EXCEPTION_STATE_IDENTITY:
209 EXPECT_EQ(2503, Head.msgh_id); 209 EXPECT_EQ(2503, Head.msgh_id);
(...skipping 25 matching lines...) Expand all
235 exception_type_t exception; 235 exception_type_t exception;
236 mach_msg_type_number_t codeCnt; 236 mach_msg_type_number_t codeCnt;
237 integer_t code[2]; 237 integer_t code[2];
238 int flavor; 238 int flavor;
239 mach_msg_type_number_t old_stateCnt; 239 mach_msg_type_number_t old_stateCnt;
240 natural_t old_state[THREAD_STATE_MAX]; 240 natural_t old_state[THREAD_STATE_MAX];
241 241
242 void InitializeForTesting() { 242 void InitializeForTesting() {
243 memset(this, 0xa5, sizeof(*this)); 243 memset(this, 0xa5, sizeof(*this));
244 Head.msgh_bits = 244 Head.msgh_bits =
245 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE) | 245 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND) |
246 MACH_MSGH_BITS_COMPLEX; 246 MACH_MSGH_BITS_COMPLEX;
247 Head.msgh_size = sizeof(*this); 247 Head.msgh_size = sizeof(*this);
248 Head.msgh_remote_port = kClientRemotePort; 248 Head.msgh_remote_port = kClientRemotePort;
249 Head.msgh_local_port = kServerLocalPort; 249 Head.msgh_local_port = kServerLocalPort;
250 Head.msgh_id = 2403; 250 Head.msgh_id = 2403;
251 msgh_body.msgh_descriptor_count = 2; 251 msgh_body.msgh_descriptor_count = 2;
252 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort); 252 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort);
253 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort); 253 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort);
254 NDR = NDR_record; 254 NDR = NDR_record;
255 exception = kExceptionType; 255 exception = kExceptionType;
(...skipping 19 matching lines...) Expand all
275 mach_msg_port_descriptor_t thread; 275 mach_msg_port_descriptor_t thread;
276 mach_msg_port_descriptor_t task; 276 mach_msg_port_descriptor_t task;
277 NDR_record_t NDR; 277 NDR_record_t NDR;
278 exception_type_t exception; 278 exception_type_t exception;
279 mach_msg_type_number_t codeCnt; 279 mach_msg_type_number_t codeCnt;
280 int64_t code[2]; 280 int64_t code[2];
281 281
282 void InitializeForTesting() { 282 void InitializeForTesting() {
283 memset(this, 0xa5, sizeof(*this)); 283 memset(this, 0xa5, sizeof(*this));
284 Head.msgh_bits = 284 Head.msgh_bits =
285 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE) | 285 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND) |
286 MACH_MSGH_BITS_COMPLEX; 286 MACH_MSGH_BITS_COMPLEX;
287 Head.msgh_size = sizeof(*this); 287 Head.msgh_size = sizeof(*this);
288 Head.msgh_remote_port = kClientRemotePort; 288 Head.msgh_remote_port = kClientRemotePort;
289 Head.msgh_local_port = kServerLocalPort; 289 Head.msgh_local_port = kServerLocalPort;
290 Head.msgh_id = 2405; 290 Head.msgh_id = 2405;
291 msgh_body.msgh_descriptor_count = 2; 291 msgh_body.msgh_descriptor_count = 2;
292 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort); 292 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort);
293 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort); 293 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort);
294 NDR = NDR_record; 294 NDR = NDR_record;
295 exception = kExceptionType; 295 exception = kExceptionType;
(...skipping 13 matching lines...) Expand all
309 exception_type_t exception; 309 exception_type_t exception;
310 mach_msg_type_number_t codeCnt; 310 mach_msg_type_number_t codeCnt;
311 int64_t code[2]; 311 int64_t code[2];
312 int flavor; 312 int flavor;
313 mach_msg_type_number_t old_stateCnt; 313 mach_msg_type_number_t old_stateCnt;
314 natural_t old_state[THREAD_STATE_MAX]; 314 natural_t old_state[THREAD_STATE_MAX];
315 315
316 void InitializeForTesting() { 316 void InitializeForTesting() {
317 memset(this, 0xa5, sizeof(*this)); 317 memset(this, 0xa5, sizeof(*this));
318 Head.msgh_bits = 318 Head.msgh_bits =
319 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE); 319 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND);
320 Head.msgh_size = sizeof(*this); 320 Head.msgh_size = sizeof(*this);
321 Head.msgh_remote_port = kClientRemotePort; 321 Head.msgh_remote_port = kClientRemotePort;
322 Head.msgh_local_port = kServerLocalPort; 322 Head.msgh_local_port = kServerLocalPort;
323 Head.msgh_id = 2406; 323 Head.msgh_id = 2406;
324 NDR = NDR_record; 324 NDR = NDR_record;
325 exception = kExceptionType; 325 exception = kExceptionType;
326 codeCnt = 2; 326 codeCnt = 2;
327 code[0] = kTestMachExceptionCodes[0]; 327 code[0] = kTestMachExceptionCodes[0];
328 code[1] = kTestMachExceptionCodes[1]; 328 code[1] = kTestMachExceptionCodes[1];
329 flavor = kThreadStateFlavor; 329 flavor = kThreadStateFlavor;
(...skipping 19 matching lines...) Expand all
349 exception_type_t exception; 349 exception_type_t exception;
350 mach_msg_type_number_t codeCnt; 350 mach_msg_type_number_t codeCnt;
351 int64_t code[2]; 351 int64_t code[2];
352 int flavor; 352 int flavor;
353 mach_msg_type_number_t old_stateCnt; 353 mach_msg_type_number_t old_stateCnt;
354 natural_t old_state[THREAD_STATE_MAX]; 354 natural_t old_state[THREAD_STATE_MAX];
355 355
356 void InitializeForTesting() { 356 void InitializeForTesting() {
357 memset(this, 0xa5, sizeof(*this)); 357 memset(this, 0xa5, sizeof(*this));
358 Head.msgh_bits = 358 Head.msgh_bits =
359 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE) | 359 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND) |
360 MACH_MSGH_BITS_COMPLEX; 360 MACH_MSGH_BITS_COMPLEX;
361 Head.msgh_size = sizeof(*this); 361 Head.msgh_size = sizeof(*this);
362 Head.msgh_remote_port = kClientRemotePort; 362 Head.msgh_remote_port = kClientRemotePort;
363 Head.msgh_local_port = kServerLocalPort; 363 Head.msgh_local_port = kServerLocalPort;
364 Head.msgh_id = 2407; 364 Head.msgh_id = 2407;
365 msgh_body.msgh_descriptor_count = 2; 365 msgh_body.msgh_descriptor_count = 2;
366 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort); 366 InitializeMachMsgPortDescriptor(&thread, kExceptionThreadPort);
367 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort); 367 InitializeMachMsgPortDescriptor(&task, kExceptionTaskPort);
368 NDR = NDR_record; 368 NDR = NDR_record;
369 exception = kExceptionType; 369 exception = kExceptionType;
(...skipping 15 matching lines...) Expand all
385 385
386 // InvalidRequest and BadIDErrorReply are used to test that 386 // InvalidRequest and BadIDErrorReply are used to test that
387 // UniversalMachExcServer deals appropriately with messages that it does not 387 // UniversalMachExcServer deals appropriately with messages that it does not
388 // understand: messages with an unknown Head.msgh_id. 388 // understand: messages with an unknown Head.msgh_id.
389 389
390 struct __attribute__((packed, aligned(4))) InvalidRequest 390 struct __attribute__((packed, aligned(4))) InvalidRequest
391 : public mach_msg_empty_send_t { 391 : public mach_msg_empty_send_t {
392 void InitializeForTesting(mach_msg_id_t id) { 392 void InitializeForTesting(mach_msg_id_t id) {
393 memset(this, 0xa5, sizeof(*this)); 393 memset(this, 0xa5, sizeof(*this));
394 header.msgh_bits = 394 header.msgh_bits =
395 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, MACH_MSG_TYPE_MAKE_SEND_ONCE); 395 MACH_MSGH_BITS(MACH_MSG_TYPE_PORT_SEND_ONCE, MACH_MSG_TYPE_PORT_SEND);
396 header.msgh_size = sizeof(*this); 396 header.msgh_size = sizeof(*this);
397 header.msgh_remote_port = kClientRemotePort; 397 header.msgh_remote_port = kClientRemotePort;
398 header.msgh_local_port = kServerLocalPort; 398 header.msgh_local_port = kServerLocalPort;
399 header.msgh_id = id; 399 header.msgh_id = id;
400 } 400 }
401 }; 401 };
402 402
403 struct __attribute__((packed, aligned(4))) BadIDErrorReply 403 struct __attribute__((packed, aligned(4))) BadIDErrorReply
404 : public mig_reply_error_t { 404 : public mig_reply_error_t {
405 void InitializeForTesting() { 405 void InitializeForTesting() {
406 memset(this, 0x5a, sizeof(*this)); 406 memset(this, 0x5a, sizeof(*this));
407 RetCode = KERN_FAILURE; 407 RetCode = KERN_FAILURE;
408 } 408 }
409 409
410 void Verify(mach_msg_id_t id) { 410 void Verify(mach_msg_id_t id) {
411 EXPECT_EQ(implicit_cast<mach_msg_bits_t>( 411 EXPECT_EQ(implicit_cast<mach_msg_bits_t>(
412 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)), 412 MACH_MSGH_BITS(MACH_MSG_TYPE_MOVE_SEND_ONCE, 0)),
413 Head.msgh_bits); 413 Head.msgh_bits);
414 EXPECT_EQ(sizeof(*this), Head.msgh_size); 414 EXPECT_EQ(sizeof(*this), Head.msgh_size);
415 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port); 415 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port);
416 EXPECT_EQ(kMachPortNull, Head.msgh_local_port); 416 EXPECT_EQ(kMachPortNull, Head.msgh_local_port);
417 EXPECT_EQ(id + 100, Head.msgh_id); 417 EXPECT_EQ(id + 100, Head.msgh_id);
418 EXPECT_EQ(0, memcmp(&NDR, &NDR_record, sizeof(NDR))); 418 EXPECT_EQ(0, memcmp(&NDR, &NDR_record, sizeof(NDR)));
419 EXPECT_EQ(MIG_BAD_ID, RetCode); 419 EXPECT_EQ(MIG_BAD_ID, RetCode);
420 } 420 }
421 }; 421 };
422 422
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
1166 1166
1167 EXPECT_EQ(test_data.kr, 1167 EXPECT_EQ(test_data.kr,
1168 ExcServerSuccessfulReturnValue(test_data.behavior, 1168 ExcServerSuccessfulReturnValue(test_data.behavior,
1169 test_data.set_thread_state)); 1169 test_data.set_thread_state));
1170 } 1170 }
1171 } 1171 }
1172 1172
1173 } // namespace 1173 } // namespace
1174 } // namespace test 1174 } // namespace test
1175 } // namespace crashpad 1175 } // namespace crashpad
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698