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

Side by Side Diff: ipc/attachment_broker_privileged_mac_unittest.cc

Issue 1778203002: Move mach code shared by Chrome IPC and Mojo to //base/mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: enum for error code Created 4 years, 9 months 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 | « ipc/attachment_broker_privileged_mac.cc ('k') | ipc/attachment_broker_unprivileged_mac.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
11 11
12 #include <map> 12 #include <map>
13 13
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/mac/mac_util.h" 15 #include "base/mac/mac_util.h"
16 #include "base/mac/mach_logging.h" 16 #include "base/mac/mach_logging.h"
17 #include "base/mac/mach_port_util.h"
17 #include "base/mac/scoped_mach_port.h" 18 #include "base/mac/scoped_mach_port.h"
18 #include "base/macros.h" 19 #include "base/macros.h"
19 #include "base/memory/shared_memory.h" 20 #include "base/memory/shared_memory.h"
20 #include "base/process/port_provider_mac.h" 21 #include "base/process/port_provider_mac.h"
21 #include "base/process/process_handle.h" 22 #include "base/process/process_handle.h"
22 #include "base/sys_info.h" 23 #include "base/sys_info.h"
23 #include "base/test/multiprocess_test.h" 24 #include "base/test/multiprocess_test.h"
24 #include "base/test/test_timeouts.h" 25 #include "base/test/test_timeouts.h"
25 #include "ipc/test_util_mac.h" 26 #include "ipc/test_util_mac.h"
26 #include "testing/multiprocess_func_list.h" 27 #include "testing/multiprocess_func_list.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 192
192 // Create some shared memory. 193 // Create some shared memory.
193 scoped_ptr<base::SharedMemory> shared_memory = 194 scoped_ptr<base::SharedMemory> shared_memory =
194 CreateAndPopulateSharedMemoryHandle(s_memory_size); 195 CreateAndPopulateSharedMemoryHandle(s_memory_size);
195 ASSERT_TRUE(shared_memory->handle().IsValid()); 196 ASSERT_TRUE(shared_memory->handle().IsValid());
196 197
197 // Insert the memory object into the destination task, via an intermediate 198 // Insert the memory object into the destination task, via an intermediate
198 // port. 199 // port.
199 IncrementMachRefCount(shared_memory->handle().GetMemoryObject(), 200 IncrementMachRefCount(shared_memory->handle().GetMemoryObject(),
200 MACH_PORT_RIGHT_SEND); 201 MACH_PORT_RIGHT_SEND);
201 mach_port_name_t inserted_memory_object = broker.CreateIntermediateMachPort( 202 mach_port_name_t inserted_memory_object = base::CreateIntermediateMachPort(
202 client_task_port_.get(), base::mac::ScopedMachSendRight( 203 client_task_port_.get(),
203 shared_memory->handle().GetMemoryObject())); 204 base::mac::ScopedMachSendRight(shared_memory->handle().GetMemoryObject()),
205 nullptr);
204 EXPECT_NE(inserted_memory_object, 206 EXPECT_NE(inserted_memory_object,
205 static_cast<mach_port_name_t>(MACH_PORT_NULL)); 207 static_cast<mach_port_name_t>(MACH_PORT_NULL));
206 SendUInt32(client_port_.get(), inserted_memory_object); 208 SendUInt32(client_port_.get(), inserted_memory_object);
207 209
208 // Check that no names have been leaked. 210 // Check that no names have been leaked.
209 shared_memory.reset(); 211 shared_memory.reset();
210 EXPECT_EQ(original_name_count, GetActiveNameCount()); 212 EXPECT_EQ(original_name_count, GetActiveNameCount());
211 213
212 int rv = -1; 214 int rv = -1;
213 ASSERT_TRUE(child_process_.WaitForExitWithTimeout( 215 ASSERT_TRUE(child_process_.WaitForExitWithTimeout(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 // Create some shared memory. 261 // Create some shared memory.
260 scoped_ptr<base::SharedMemory> shared_memory = 262 scoped_ptr<base::SharedMemory> shared_memory =
261 CreateAndPopulateSharedMemoryHandle(s_memory_size); 263 CreateAndPopulateSharedMemoryHandle(s_memory_size);
262 ASSERT_TRUE(shared_memory->handle().IsValid()); 264 ASSERT_TRUE(shared_memory->handle().IsValid());
263 265
264 // Insert the memory object into the destination task, via an intermediate 266 // Insert the memory object into the destination task, via an intermediate
265 // port, twice. 267 // port, twice.
266 for (int i = 0; i < 2; ++i) { 268 for (int i = 0; i < 2; ++i) {
267 IncrementMachRefCount(shared_memory->handle().GetMemoryObject(), 269 IncrementMachRefCount(shared_memory->handle().GetMemoryObject(),
268 MACH_PORT_RIGHT_SEND); 270 MACH_PORT_RIGHT_SEND);
269 mach_port_name_t inserted_memory_object = broker.CreateIntermediateMachPort( 271 mach_port_name_t inserted_memory_object = base::CreateIntermediateMachPort(
270 client_task_port_.get(), 272 client_task_port_.get(),
271 base::mac::ScopedMachSendRight( 273 base::mac::ScopedMachSendRight(
272 shared_memory->handle().GetMemoryObject())); 274 shared_memory->handle().GetMemoryObject()),
275 nullptr);
273 EXPECT_NE(inserted_memory_object, 276 EXPECT_NE(inserted_memory_object,
274 static_cast<mach_port_name_t>(MACH_PORT_NULL)); 277 static_cast<mach_port_name_t>(MACH_PORT_NULL));
275 SendUInt32(client_port_.get(), inserted_memory_object); 278 SendUInt32(client_port_.get(), inserted_memory_object);
276 } 279 }
277 280
278 // Check that no names have been leaked. 281 // Check that no names have been leaked.
279 shared_memory.reset(); 282 shared_memory.reset();
280 EXPECT_EQ(original_name_count, GetActiveNameCount()); 283 EXPECT_EQ(original_name_count, GetActiveNameCount());
281 284
282 int rv = -1; 285 int rv = -1;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 for (int i = 0; i < 2; ++i) { 358 for (int i = 0; i < 2; ++i) {
356 // Create some shared memory. 359 // Create some shared memory.
357 scoped_ptr<base::SharedMemory> shared_memory = 360 scoped_ptr<base::SharedMemory> shared_memory =
358 CreateAndPopulateSharedMemoryHandle(s_memory_size); 361 CreateAndPopulateSharedMemoryHandle(s_memory_size);
359 ASSERT_TRUE(shared_memory->handle().IsValid()); 362 ASSERT_TRUE(shared_memory->handle().IsValid());
360 363
361 // Insert the memory object into the destination task, via an intermediate 364 // Insert the memory object into the destination task, via an intermediate
362 // port. 365 // port.
363 IncrementMachRefCount(shared_memory->handle().GetMemoryObject(), 366 IncrementMachRefCount(shared_memory->handle().GetMemoryObject(),
364 MACH_PORT_RIGHT_SEND); 367 MACH_PORT_RIGHT_SEND);
365 mach_port_name_t inserted_memory_object = broker.CreateIntermediateMachPort( 368 mach_port_name_t inserted_memory_object = base::CreateIntermediateMachPort(
366 client_task_port_.get(), 369 client_task_port_.get(),
367 base::mac::ScopedMachSendRight( 370 base::mac::ScopedMachSendRight(
368 shared_memory->handle().GetMemoryObject())); 371 shared_memory->handle().GetMemoryObject()),
372 nullptr);
369 EXPECT_NE(inserted_memory_object, 373 EXPECT_NE(inserted_memory_object,
370 static_cast<mach_port_name_t>(MACH_PORT_NULL)); 374 static_cast<mach_port_name_t>(MACH_PORT_NULL));
371 SendUInt32(client_port_.get(), inserted_memory_object); 375 SendUInt32(client_port_.get(), inserted_memory_object);
372 } 376 }
373 377
374 // Check that no names have been leaked. 378 // Check that no names have been leaked.
375 EXPECT_EQ(original_name_count, GetActiveNameCount()); 379 EXPECT_EQ(original_name_count, GetActiveNameCount());
376 380
377 int rv = -1; 381 int rv = -1;
378 ASSERT_TRUE(child_process_.WaitForExitWithTimeout( 382 ASSERT_TRUE(child_process_.WaitForExitWithTimeout(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 // After releasing one shared memory region, the name count should decrement. 430 // After releasing one shared memory region, the name count should decrement.
427 shared_memory.reset(); 431 shared_memory.reset();
428 EXPECT_EQ(original_name_count + 1, GetActiveNameCount()); 432 EXPECT_EQ(original_name_count + 1, GetActiveNameCount());
429 shared_memory2.reset(); 433 shared_memory2.reset();
430 EXPECT_EQ(original_name_count, GetActiveNameCount()); 434 EXPECT_EQ(original_name_count, GetActiveNameCount());
431 435
432 return 0; 436 return 0;
433 } 437 }
434 438
435 } // namespace IPC 439 } // namespace IPC
OLDNEW
« no previous file with comments | « ipc/attachment_broker_privileged_mac.cc ('k') | ipc/attachment_broker_unprivileged_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698