From a68114f7be41610ed7fd4a85de6b76a47cfb4b1b Mon Sep 17 00:00:00 2001 From: "apatrick@google.com" Date: Mon, 30 Nov 2009 23:32:49 +0000 Subject: Changed AudioRendererImplTest and DeferredResourceLoadingTest tests so they duplicate the shared memory before passing it to another object that takes ownership. Prevents same handle from being closed twice. TEST=none BUG=none Review URL: http://codereview.chromium.org/449026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33372 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/common/resource_dispatcher_unittest.cc | 9 ++++++++- chrome/renderer/media/audio_renderer_impl_unittest.cc | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/chrome/common/resource_dispatcher_unittest.cc b/chrome/common/resource_dispatcher_unittest.cc index ab12eea..67b9351 100644 --- a/chrome/common/resource_dispatcher_unittest.cc +++ b/chrome/common/resource_dispatcher_unittest.cc @@ -7,6 +7,7 @@ #include "base/message_loop.h" #include "base/process.h" +#include "base/process_util.h" #include "base/scoped_ptr.h" #include "chrome/common/filter_policy.h" #include "chrome/common/render_messages.h" @@ -226,8 +227,14 @@ class DeferredResourceLoadingTest : public ResourceDispatcherTest, delete response_message; + // Duplicate the shared memory handle so both the test and the callee can + // close their copy. + base::SharedMemoryHandle duplicated_handle; + EXPECT_TRUE(shared_handle_.ShareToProcess(base::GetCurrentProcessHandle(), + &duplicated_handle)); + response_message = - new ViewMsg_Resource_DataReceived(0, 0, shared_handle_.handle(), 100); + new ViewMsg_Resource_DataReceived(0, 0, duplicated_handle, 100); dispatcher_->OnMessageReceived(*response_message); diff --git a/chrome/renderer/media/audio_renderer_impl_unittest.cc b/chrome/renderer/media/audio_renderer_impl_unittest.cc index 601fa31..1dda05d 100644 --- a/chrome/renderer/media/audio_renderer_impl_unittest.cc +++ b/chrome/renderer/media/audio_renderer_impl_unittest.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/process_util.h" #include "chrome/common/render_messages.h" #include "chrome/renderer/media/audio_renderer_impl.h" #include "media/base/data_buffer.h" @@ -50,7 +51,14 @@ class AudioRendererImplTest : public ::testing::Test { // Run pending tasks and simulate responding with a created audio stream. message_loop_->RunAllPending(); - renderer_->OnCreated(shared_mem_.handle(), kSize); + + // Duplicate the shared memory handle so both the test and the callee can + // close their copy. + base::SharedMemoryHandle duplicated_handle; + EXPECT_TRUE(shared_mem_.ShareToProcess(base::GetCurrentProcessHandle(), + &duplicated_handle)); + + renderer_->OnCreated(duplicated_handle, kSize); } virtual ~AudioRendererImplTest() { -- cgit v1.1