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

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

Issue 700383007: Use implicit_cast<> instead of static_cast<> whenever possible (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 6 years, 1 month 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
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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 const thread_t kExceptionThreadPort = 0x03030303; 44 const thread_t kExceptionThreadPort = 0x03030303;
45 const task_t kExceptionTaskPort = 0x04040404; 45 const task_t kExceptionTaskPort = 0x04040404;
46 46
47 // Other fake exception values. 47 // Other fake exception values.
48 const exception_type_t kExceptionType = EXC_BAD_ACCESS; 48 const exception_type_t kExceptionType = EXC_BAD_ACCESS;
49 49
50 // Test using an exception code with the high bit set to ensure that it gets 50 // Test using an exception code with the high bit set to ensure that it gets
51 // promoted to the wider mach_exception_data_type_t type as a signed quantity. 51 // promoted to the wider mach_exception_data_type_t type as a signed quantity.
52 const exception_data_type_t kTestExceptonCodes[] = { 52 const exception_data_type_t kTestExceptonCodes[] = {
53 KERN_PROTECTION_FAILURE, 53 KERN_PROTECTION_FAILURE,
54 static_cast<exception_data_type_t>(0xfedcba98), 54 implicit_cast<exception_data_type_t>(0xfedcba98),
55 }; 55 };
56 56
57 const mach_exception_data_type_t kTestMachExceptionCodes[] = { 57 const mach_exception_data_type_t kTestMachExceptionCodes[] = {
58 KERN_PROTECTION_FAILURE, 58 KERN_PROTECTION_FAILURE,
59 static_cast<mach_exception_data_type_t>(0xfedcba9876543210), 59 implicit_cast<mach_exception_data_type_t>(0xfedcba9876543210),
60 }; 60 };
61 61
62 const thread_state_flavor_t kThreadStateFlavor = MACHINE_THREAD_STATE; 62 const thread_state_flavor_t kThreadStateFlavor = MACHINE_THREAD_STATE;
63 const mach_msg_type_number_t kThreadStateFlavorCount = 63 const mach_msg_type_number_t kThreadStateFlavorCount =
64 MACHINE_THREAD_STATE_COUNT; 64 MACHINE_THREAD_STATE_COUNT;
65 65
66 void InitializeMachMsgPortDescriptor(mach_msg_port_descriptor_t* descriptor, 66 void InitializeMachMsgPortDescriptor(mach_msg_port_descriptor_t* descriptor,
67 mach_port_t port) { 67 mach_port_t port) {
68 descriptor->name = port; 68 descriptor->name = port;
69 descriptor->disposition = MACH_MSG_TYPE_MOVE_SEND; 69 descriptor->disposition = MACH_MSG_TYPE_MOVE_SEND;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 void InitializeForTesting() { 115 void InitializeForTesting() {
116 memset(this, 0x5a, sizeof(*this)); 116 memset(this, 0x5a, sizeof(*this));
117 RetCode = KERN_FAILURE; 117 RetCode = KERN_FAILURE;
118 } 118 }
119 119
120 // Verify accepts a |behavior| parameter because the same message format and 120 // Verify accepts a |behavior| parameter because the same message format and
121 // verification function is used for ExceptionRaiseReply and 121 // verification function is used for ExceptionRaiseReply and
122 // MachExceptionRaiseReply. Knowing which behavior is expected allows the 122 // MachExceptionRaiseReply. Knowing which behavior is expected allows the
123 // message ID to be checked. 123 // message ID to be checked.
124 void Verify(exception_behavior_t behavior) { 124 void Verify(exception_behavior_t behavior) {
125 EXPECT_EQ(static_cast<mach_msg_bits_t>( 125 EXPECT_EQ(implicit_cast<mach_msg_bits_t>(
126 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)), 126 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)),
127 Head.msgh_bits); 127 Head.msgh_bits);
128 EXPECT_EQ(sizeof(*this), Head.msgh_size); 128 EXPECT_EQ(sizeof(*this), Head.msgh_size);
129 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port); 129 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port);
130 EXPECT_EQ(kMachPortNull, Head.msgh_local_port); 130 EXPECT_EQ(kMachPortNull, Head.msgh_local_port);
131 switch (behavior) { 131 switch (behavior) {
132 case EXCEPTION_DEFAULT: 132 case EXCEPTION_DEFAULT:
133 EXPECT_EQ(2501, Head.msgh_id); 133 EXPECT_EQ(2501, Head.msgh_id);
134 break; 134 break;
135 case EXCEPTION_DEFAULT | kMachExceptionCodes: 135 case EXCEPTION_DEFAULT | kMachExceptionCodes:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 memset(this, 0x5a, sizeof(*this)); 189 memset(this, 0x5a, sizeof(*this));
190 RetCode = KERN_FAILURE; 190 RetCode = KERN_FAILURE;
191 } 191 }
192 192
193 // Verify accepts a |behavior| parameter because the same message format and 193 // Verify accepts a |behavior| parameter because the same message format and
194 // verification function is used for ExceptionRaiseStateReply, 194 // verification function is used for ExceptionRaiseStateReply,
195 // ExceptionRaiseStateIdentityReply, MachExceptionRaiseStateReply, and 195 // ExceptionRaiseStateIdentityReply, MachExceptionRaiseStateReply, and
196 // MachExceptionRaiseStateIdentityReply. Knowing which behavior is expected 196 // MachExceptionRaiseStateIdentityReply. Knowing which behavior is expected
197 // allows the message ID to be checked. 197 // allows the message ID to be checked.
198 void Verify(exception_behavior_t behavior) { 198 void Verify(exception_behavior_t behavior) {
199 EXPECT_EQ(static_cast<mach_msg_bits_t>( 199 EXPECT_EQ(implicit_cast<mach_msg_bits_t>(
200 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)), 200 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)),
201 Head.msgh_bits); 201 Head.msgh_bits);
202 EXPECT_EQ(sizeof(*this), Head.msgh_size); 202 EXPECT_EQ(sizeof(*this), Head.msgh_size);
203 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port); 203 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port);
204 EXPECT_EQ(kMachPortNull, Head.msgh_local_port); 204 EXPECT_EQ(kMachPortNull, Head.msgh_local_port);
205 switch (behavior) { 205 switch (behavior) {
206 case EXCEPTION_STATE: 206 case EXCEPTION_STATE:
207 EXPECT_EQ(2502, Head.msgh_id); 207 EXPECT_EQ(2502, Head.msgh_id);
208 break; 208 break;
209 case EXCEPTION_STATE_IDENTITY: 209 case EXCEPTION_STATE_IDENTITY:
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 }; 402 };
403 403
404 struct __attribute__((packed, aligned(4))) BadIDErrorReply 404 struct __attribute__((packed, aligned(4))) BadIDErrorReply
405 : public mig_reply_error_t { 405 : public mig_reply_error_t {
406 void InitializeForTesting() { 406 void InitializeForTesting() {
407 memset(this, 0x5a, sizeof(*this)); 407 memset(this, 0x5a, sizeof(*this));
408 RetCode = KERN_FAILURE; 408 RetCode = KERN_FAILURE;
409 } 409 }
410 410
411 void Verify(mach_msg_id_t id) { 411 void Verify(mach_msg_id_t id) {
412 EXPECT_EQ(static_cast<mach_msg_bits_t>( 412 EXPECT_EQ(implicit_cast<mach_msg_bits_t>(
413 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)), 413 MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0)),
414 Head.msgh_bits); 414 Head.msgh_bits);
415 EXPECT_EQ(sizeof(*this), Head.msgh_size); 415 EXPECT_EQ(sizeof(*this), Head.msgh_size);
416 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port); 416 EXPECT_EQ(kClientRemotePort, Head.msgh_remote_port);
417 EXPECT_EQ(kMachPortNull, Head.msgh_local_port); 417 EXPECT_EQ(kMachPortNull, Head.msgh_local_port);
418 EXPECT_EQ(id + 100, Head.msgh_id); 418 EXPECT_EQ(id + 100, Head.msgh_id);
419 EXPECT_EQ(0, memcmp(&NDR, &NDR_record, sizeof(NDR))); 419 EXPECT_EQ(0, memcmp(&NDR, &NDR_record, sizeof(NDR)));
420 EXPECT_EQ(MIG_BAD_ID, RetCode); 420 EXPECT_EQ(MIG_BAD_ID, RetCode);
421 } 421 }
422 }; 422 };
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 int signal; 916 int signal;
917 ExcCrashRecoverOriginalException(code[0], nullptr, &signal); 917 ExcCrashRecoverOriginalException(code[0], nullptr, &signal);
918 SetExpectedChildTermination(kTerminationSignal, signal); 918 SetExpectedChildTermination(kTerminationSignal, signal);
919 } 919 }
920 920
921 const bool has_state = ExceptionBehaviorHasState(behavior); 921 const bool has_state = ExceptionBehaviorHasState(behavior);
922 if (has_state) { 922 if (has_state) {
923 EXPECT_EQ(flavor_, *flavor); 923 EXPECT_EQ(flavor_, *flavor);
924 EXPECT_EQ(state_count_, old_state_count); 924 EXPECT_EQ(state_count_, old_state_count);
925 EXPECT_NE(nullptr, old_state); 925 EXPECT_NE(nullptr, old_state);
926 EXPECT_EQ(static_cast<mach_msg_type_number_t>(THREAD_STATE_MAX), 926 EXPECT_EQ(implicit_cast<mach_msg_type_number_t>(THREAD_STATE_MAX),
927 *new_state_count); 927 *new_state_count);
928 EXPECT_NE(nullptr, new_state); 928 EXPECT_NE(nullptr, new_state);
929 } else { 929 } else {
930 EXPECT_EQ(THREAD_STATE_NONE, *flavor); 930 EXPECT_EQ(THREAD_STATE_NONE, *flavor);
931 EXPECT_EQ(0u, old_state_count); 931 EXPECT_EQ(0u, old_state_count);
932 EXPECT_EQ(nullptr, old_state); 932 EXPECT_EQ(nullptr, old_state);
933 EXPECT_EQ(0u, *new_state_count); 933 EXPECT_EQ(0u, *new_state_count);
934 EXPECT_EQ(nullptr, new_state); 934 EXPECT_EQ(nullptr, new_state);
935 } 935 }
936 936
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
1167 1167
1168 EXPECT_EQ(test_data.kr, 1168 EXPECT_EQ(test_data.kr,
1169 ExcServerSuccessfulReturnValue(test_data.behavior, 1169 ExcServerSuccessfulReturnValue(test_data.behavior,
1170 test_data.set_thread_state)); 1170 test_data.set_thread_state));
1171 } 1171 }
1172 } 1172 }
1173 1173
1174 } // namespace 1174 } // namespace
1175 } // namespace test 1175 } // namespace test
1176 } // namespace crashpad 1176 } // namespace crashpad
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698