| Index: content/plugin/webplugin_proxy.cc
|
| ===================================================================
|
| --- content/plugin/webplugin_proxy.cc (revision 128951)
|
| +++ content/plugin/webplugin_proxy.cc (working copy)
|
| @@ -35,6 +35,10 @@
|
| #include "ui/base/x/x11_util_internal.h"
|
| #endif
|
|
|
| +#if defined(OS_WIN)
|
| +#include "content/common/sandbox_policy.h"
|
| +#endif
|
| +
|
| using WebKit::WebBindings;
|
|
|
| using webkit::npapi::WebPluginResourceClient;
|
| @@ -129,10 +133,9 @@
|
| #if defined(OS_WIN)
|
| void WebPluginProxy::SetWindowlessPumpEvent(HANDLE pump_messages_event) {
|
| HANDLE pump_messages_event_for_renderer = NULL;
|
| - DuplicateHandle(GetCurrentProcess(), pump_messages_event,
|
| - channel_->renderer_handle(),
|
| - &pump_messages_event_for_renderer,
|
| - 0, FALSE, DUPLICATE_SAME_ACCESS);
|
| + sandbox::BrokerDuplicateHandle(pump_messages_event, channel_->peer_pid(),
|
| + &pump_messages_event_for_renderer,
|
| + 0, FALSE, DUPLICATE_SAME_ACCESS);
|
| DCHECK(pump_messages_event_for_renderer != NULL);
|
| Send(new PluginHostMsg_SetWindowlessPumpEvent(
|
| route_id_, pump_messages_event_for_renderer));
|
| @@ -470,25 +473,17 @@
|
| const TransportDIB::Handle& dib_handle,
|
| const gfx::Rect& window_rect,
|
| scoped_ptr<skia::PlatformCanvas>* canvas_out) {
|
| - // Create a canvas that will reference the shared bits. We have to handle
|
| - // errors here since we're mapping a large amount of memory that may not fit
|
| - // in our address space, or go wrong in some other way.
|
| - HANDLE section;
|
| - DuplicateHandle(channel_->renderer_handle(), dib_handle, GetCurrentProcess(),
|
| - §ion,
|
| - STANDARD_RIGHTS_REQUIRED | FILE_MAP_READ | FILE_MAP_WRITE,
|
| - FALSE, 0);
|
| scoped_ptr<skia::PlatformCanvas> canvas(new skia::PlatformCanvas);
|
| if (!canvas->initialize(
|
| window_rect.width(),
|
| window_rect.height(),
|
| true,
|
| - section)) {
|
| + dib_handle)) {
|
| canvas_out->reset();
|
| }
|
| canvas_out->reset(canvas.release());
|
| // The canvas does not own the section so we need to close it now.
|
| - CloseHandle(section);
|
| + CloseHandle(dib_handle);
|
| }
|
|
|
| void WebPluginProxy::SetWindowlessBuffers(
|
|
|