summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authoryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 23:24:56 +0000
committeryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 23:24:56 +0000
commit3e286c3c6226d112d387336a745fe6483e7b9fe5 (patch)
treee9da847cb9777f1a45c16760d10999b86516cb3a /content
parenta716cc122ecbaafc3ea0f130df31517bcc191d41 (diff)
downloadchromium_src-3e286c3c6226d112d387336a745fe6483e7b9fe5.zip
chromium_src-3e286c3c6226d112d387336a745fe6483e7b9fe5.tar.gz
chromium_src-3e286c3c6226d112d387336a745fe6483e7b9fe5.tar.bz2
Avoid leaking SerializedHandles.
This CL automatically closes SerializedHandles at the receiving side of ResourceMessageParams (the host side for ResourceMessageCallParams; the plugin side for ResourceMessageReplyParams), if they are not taken by message handlers. BUG=None TEST=None Review URL: https://chromiumcodereview.appspot.com/11312017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165799 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/pepper/pepper_gamepad_host.cc5
-rw-r--r--content/browser/renderer_host/pepper/pepper_gamepad_host_unittest.cc2
2 files changed, 2 insertions, 5 deletions
diff --git a/content/browser/renderer_host/pepper/pepper_gamepad_host.cc b/content/browser/renderer_host/pepper/pepper_gamepad_host.cc
index 9e96749..267fce2 100644
--- a/content/browser/renderer_host/pepper/pepper_gamepad_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_gamepad_host.cc
@@ -71,14 +71,11 @@ int32_t PepperGamepadHost::OnMsgRequestMemory(
}
void PepperGamepadHost::GotUserGesture(
- const ppapi::host::ReplyMessageContext& in_context) {
+ const ppapi::host::ReplyMessageContext& context) {
base::SharedMemoryHandle handle =
gamepad_service_->GetSharedMemoryHandleForProcess(
browser_ppapi_host_->GetPluginProcessHandle());
- // The shared memory handle is sent in the params struct
- // (in the reply context), so we have to make a copy to mutate it.
- ppapi::host::ReplyMessageContext context = in_context;
context.params.AppendHandle(ppapi::proxy::SerializedHandle(
handle, sizeof(ppapi::ContentGamepadHardwareBuffer)));
host()->SendReply(context, PpapiPluginMsg_Gamepad_SendMemory());
diff --git a/content/browser/renderer_host/pepper/pepper_gamepad_host_unittest.cc b/content/browser/renderer_host/pepper/pepper_gamepad_host_unittest.cc
index 23c90ef..da4e448 100644
--- a/content/browser/renderer_host/pepper/pepper_gamepad_host_unittest.cc
+++ b/content/browser/renderer_host/pepper/pepper_gamepad_host_unittest.cc
@@ -178,7 +178,7 @@ TEST_F(PepperGamepadHostTest, WaitForReply) {
// Extract the shared memory handle.
base::SharedMemoryHandle reply_handle;
- EXPECT_TRUE(reply_params.GetSharedMemoryHandleAtIndex(0, &reply_handle));
+ EXPECT_TRUE(reply_params.TakeSharedMemoryHandleAtIndex(0, &reply_handle));
// Validate the shared memory.
base::SharedMemory shared_memory(reply_handle, true);