OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ipc/attachment_broker_privileged_mac.h" | 5 #include "ipc/attachment_broker_privileged_mac.h" |
6 | 6 |
7 #include <mach/mach.h> | 7 #include <mach/mach.h> |
8 #include <mach/mach_vm.h> | 8 #include <mach/mach_vm.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 #include <stdint.h> | 10 #include <stdint.h> |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 // Dummy port provider. | 175 // Dummy port provider. |
176 MockPortProvider port_provider_; | 176 MockPortProvider port_provider_; |
177 | 177 |
178 base::Process child_process_; | 178 base::Process child_process_; |
179 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivilegedMacMultiProcessTest); | 179 DISALLOW_COPY_AND_ASSIGN(AttachmentBrokerPrivilegedMacMultiProcessTest); |
180 }; | 180 }; |
181 | 181 |
182 // The attachment broker inserts a right for a memory object into the | 182 // The attachment broker inserts a right for a memory object into the |
183 // destination task. | 183 // destination task. |
184 TEST_F(AttachmentBrokerPrivilegedMacMultiProcessTest, InsertRight) { | 184 TEST_F(AttachmentBrokerPrivilegedMacMultiProcessTest, InsertRight) { |
185 // Mach-based SharedMemory isn't support on OSX 10.6. | |
186 if (base::mac::IsOSSnowLeopard()) | |
187 return; | |
188 | |
189 SetUpChild("InsertRightClient"); | 185 SetUpChild("InsertRightClient"); |
190 mach_msg_type_number_t original_name_count = GetActiveNameCount(); | 186 mach_msg_type_number_t original_name_count = GetActiveNameCount(); |
191 IPC::AttachmentBrokerPrivilegedMac broker(&port_provider_); | 187 IPC::AttachmentBrokerPrivilegedMac broker(&port_provider_); |
192 | 188 |
193 // Create some shared memory. | 189 // Create some shared memory. |
194 scoped_ptr<base::SharedMemory> shared_memory = | 190 scoped_ptr<base::SharedMemory> shared_memory = |
195 CreateAndPopulateSharedMemoryHandle(s_memory_size); | 191 CreateAndPopulateSharedMemoryHandle(s_memory_size); |
196 ASSERT_TRUE(shared_memory->handle().IsValid()); | 192 ASSERT_TRUE(shared_memory->handle().IsValid()); |
197 | 193 |
198 // Insert the memory object into the destination task, via an intermediate | 194 // Insert the memory object into the destination task, via an intermediate |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 // Check that no names have been leaked. | 239 // Check that no names have been leaked. |
244 shared_memory.reset(); | 240 shared_memory.reset(); |
245 EXPECT_EQ(original_name_count, GetActiveNameCount()); | 241 EXPECT_EQ(original_name_count, GetActiveNameCount()); |
246 | 242 |
247 return 0; | 243 return 0; |
248 } | 244 } |
249 | 245 |
250 // The attachment broker inserts the right for a memory object into the | 246 // The attachment broker inserts the right for a memory object into the |
251 // destination task twice. | 247 // destination task twice. |
252 TEST_F(AttachmentBrokerPrivilegedMacMultiProcessTest, InsertSameRightTwice) { | 248 TEST_F(AttachmentBrokerPrivilegedMacMultiProcessTest, InsertSameRightTwice) { |
253 // Mach-based SharedMemory isn't support on OSX 10.6. | |
254 if (base::mac::IsOSSnowLeopard()) | |
255 return; | |
256 | |
257 SetUpChild("InsertSameRightTwiceClient"); | 249 SetUpChild("InsertSameRightTwiceClient"); |
258 mach_msg_type_number_t original_name_count = GetActiveNameCount(); | 250 mach_msg_type_number_t original_name_count = GetActiveNameCount(); |
259 IPC::AttachmentBrokerPrivilegedMac broker(&port_provider_); | 251 IPC::AttachmentBrokerPrivilegedMac broker(&port_provider_); |
260 | 252 |
261 // Create some shared memory. | 253 // Create some shared memory. |
262 scoped_ptr<base::SharedMemory> shared_memory = | 254 scoped_ptr<base::SharedMemory> shared_memory = |
263 CreateAndPopulateSharedMemoryHandle(s_memory_size); | 255 CreateAndPopulateSharedMemoryHandle(s_memory_size); |
264 ASSERT_TRUE(shared_memory->handle().IsValid()); | 256 ASSERT_TRUE(shared_memory->handle().IsValid()); |
265 | 257 |
266 // Insert the memory object into the destination task, via an intermediate | 258 // Insert the memory object into the destination task, via an intermediate |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 // as if no names were ever inserted | 332 // as if no names were ever inserted |
341 shared_memory2.reset(); | 333 shared_memory2.reset(); |
342 EXPECT_EQ(original_name_count, GetActiveNameCount()); | 334 EXPECT_EQ(original_name_count, GetActiveNameCount()); |
343 | 335 |
344 return 0; | 336 return 0; |
345 } | 337 } |
346 | 338 |
347 // The attachment broker inserts the rights for two memory objects into the | 339 // The attachment broker inserts the rights for two memory objects into the |
348 // destination task. | 340 // destination task. |
349 TEST_F(AttachmentBrokerPrivilegedMacMultiProcessTest, InsertTwoRights) { | 341 TEST_F(AttachmentBrokerPrivilegedMacMultiProcessTest, InsertTwoRights) { |
350 // Mach-based SharedMemory isn't support on OSX 10.6. | |
351 if (base::mac::IsOSSnowLeopard()) | |
352 return; | |
353 | |
354 SetUpChild("InsertTwoRightsClient"); | 342 SetUpChild("InsertTwoRightsClient"); |
355 mach_msg_type_number_t original_name_count = GetActiveNameCount(); | 343 mach_msg_type_number_t original_name_count = GetActiveNameCount(); |
356 IPC::AttachmentBrokerPrivilegedMac broker(&port_provider_); | 344 IPC::AttachmentBrokerPrivilegedMac broker(&port_provider_); |
357 | 345 |
358 for (int i = 0; i < 2; ++i) { | 346 for (int i = 0; i < 2; ++i) { |
359 // Create some shared memory. | 347 // Create some shared memory. |
360 scoped_ptr<base::SharedMemory> shared_memory = | 348 scoped_ptr<base::SharedMemory> shared_memory = |
361 CreateAndPopulateSharedMemoryHandle(s_memory_size); | 349 CreateAndPopulateSharedMemoryHandle(s_memory_size); |
362 ASSERT_TRUE(shared_memory->handle().IsValid()); | 350 ASSERT_TRUE(shared_memory->handle().IsValid()); |
363 | 351 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 // After releasing one shared memory region, the name count should decrement. | 418 // After releasing one shared memory region, the name count should decrement. |
431 shared_memory.reset(); | 419 shared_memory.reset(); |
432 EXPECT_EQ(original_name_count + 1, GetActiveNameCount()); | 420 EXPECT_EQ(original_name_count + 1, GetActiveNameCount()); |
433 shared_memory2.reset(); | 421 shared_memory2.reset(); |
434 EXPECT_EQ(original_name_count, GetActiveNameCount()); | 422 EXPECT_EQ(original_name_count, GetActiveNameCount()); |
435 | 423 |
436 return 0; | 424 return 0; |
437 } | 425 } |
438 | 426 |
439 } // namespace IPC | 427 } // namespace IPC |
OLD | NEW |