| Index: mojo/edk/system/shared_buffer_dispatcher_unittest.cc
 | 
| diff --git a/mojo/edk/system/shared_buffer_dispatcher_unittest.cc b/mojo/edk/system/shared_buffer_dispatcher_unittest.cc
 | 
| index fa90b239796fce39d26a78927b76c4b115ba6324..bf8a1ddbf46073e290a9b91dcca98b7bb328bf6d 100644
 | 
| --- a/mojo/edk/system/shared_buffer_dispatcher_unittest.cc
 | 
| +++ b/mojo/edk/system/shared_buffer_dispatcher_unittest.cc
 | 
| @@ -203,6 +203,49 @@ TEST_F(SharedBufferDispatcherTest, SupportsEntrypointClass) {
 | 
|    EXPECT_EQ(MOJO_RESULT_OK, d->Close());
 | 
|  }
 | 
|  
 | 
| +TEST_F(SharedBufferDispatcherTest, DuplicateDispatcher) {
 | 
| +  const uint64_t kSize = 100u;
 | 
| +
 | 
| +  MojoResult result = MOJO_RESULT_INTERNAL;
 | 
| +  auto dispatcher1 = SharedBufferDispatcher::Create(
 | 
| +      platform_support(), SharedBufferDispatcher::kDefaultCreateOptions, kSize,
 | 
| +      &result);
 | 
| +  EXPECT_EQ(MOJO_RESULT_OK, result);
 | 
| +
 | 
| +  // Map and write something.
 | 
| +  std::unique_ptr<PlatformSharedBufferMapping> mapping;
 | 
| +  EXPECT_EQ(
 | 
| +      MOJO_RESULT_OK,
 | 
| +      dispatcher1->MapBuffer(0u, kSize, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
 | 
| +  static_cast<char*>(mapping->GetBase())[0] = 'x';
 | 
| +  mapping.reset();
 | 
| +
 | 
| +  // Duplicate |dispatcher1| and then close it.
 | 
| +  RefPtr<Dispatcher> dispatcher2;
 | 
| +  EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->DuplicateDispatcher(&dispatcher2));
 | 
| +  ASSERT_TRUE(dispatcher2);
 | 
| +  EXPECT_EQ(Dispatcher::Type::SHARED_BUFFER, dispatcher2->GetType());
 | 
| +
 | 
| +  EXPECT_EQ(MOJO_RESULT_OK, dispatcher1->Close());
 | 
| +
 | 
| +  // Make sure that |dispatcher2| still reports the right information.
 | 
| +  MojoBufferInformation info = {};
 | 
| +  EXPECT_EQ(MOJO_RESULT_OK,
 | 
| +            dispatcher2->GetBufferInformation(
 | 
| +                MakeUserPointer(&info), static_cast<uint32_t>(sizeof(info))));
 | 
| +  EXPECT_EQ(sizeof(MojoBufferInformation), info.struct_size);
 | 
| +  EXPECT_EQ(MOJO_BUFFER_INFORMATION_FLAG_NONE, info.flags);
 | 
| +  EXPECT_EQ(kSize, info.num_bytes);
 | 
| +
 | 
| +  // Map |dispatcher2| and read something.
 | 
| +  EXPECT_EQ(
 | 
| +      MOJO_RESULT_OK,
 | 
| +      dispatcher2->MapBuffer(0u, kSize, MOJO_MAP_BUFFER_FLAG_NONE, &mapping));
 | 
| +  EXPECT_EQ('x', static_cast<char*>(mapping->GetBase())[0]);
 | 
| +
 | 
| +  EXPECT_EQ(MOJO_RESULT_OK, dispatcher2->Close());
 | 
| +}
 | 
| +
 | 
|  TEST_F(SharedBufferDispatcherTest, DuplicateBufferHandle) {
 | 
|    const uint64_t kSize = 100u;
 | 
|  
 | 
| 
 |