| Index: ppapi/proxy/ppb_cursor_control_proxy.cc | 
| =================================================================== | 
| --- ppapi/proxy/ppb_cursor_control_proxy.cc	(revision 72840) | 
| +++ ppapi/proxy/ppb_cursor_control_proxy.cc	(working copy) | 
| @@ -1,11 +1,14 @@ | 
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| // Use of this source code is governed by a BSD-style license that can be | 
| // found in the LICENSE file. | 
|  | 
| #include "ppapi/proxy/ppb_cursor_control_proxy.h" | 
|  | 
| +#include "ppapi/c/dev/pp_cursor_type_dev.h" | 
| #include "ppapi/c/dev/ppb_cursor_control_dev.h" | 
| #include "ppapi/proxy/plugin_dispatcher.h" | 
| +#include "ppapi/proxy/plugin_resource.h" | 
| +#include "ppapi/proxy/plugin_resource_tracker.h" | 
| #include "ppapi/proxy/ppapi_messages.h" | 
|  | 
| namespace pp { | 
| @@ -21,11 +24,24 @@ | 
| if (!dispatcher) | 
| return PP_FALSE; | 
|  | 
| +  // It's legal for the image ID to be null if the type is not custom. | 
| +  HostResource cursor_image_resource; | 
| +  if (type == PP_CURSORTYPE_CUSTOM) { | 
| +    PluginResource* cursor_image = PluginResourceTracker::GetInstance()-> | 
| +        GetResourceObject(custom_image_id); | 
| +    if (!cursor_image || cursor_image->instance() != instance_id) | 
| +      return PP_FALSE; | 
| +    cursor_image_resource = cursor_image->host_resource(); | 
| +  } else { | 
| +    if (custom_image_id) | 
| +      return PP_FALSE;  // Image specified for a predefined type. | 
| +  } | 
| + | 
| PP_Bool result = PP_FALSE; | 
| PP_Point empty_point = { 0, 0 }; | 
| dispatcher->Send(new PpapiHostMsg_PPBCursorControl_SetCursor( | 
| INTERFACE_ID_PPB_CURSORCONTROL, | 
| -      instance_id, static_cast<int32_t>(type), custom_image_id, | 
| +      instance_id, static_cast<int32_t>(type), cursor_image_resource, | 
| hot_spot ? *hot_spot : empty_point, &result)); | 
| return result; | 
| } | 
| @@ -121,11 +137,12 @@ | 
|  | 
| void PPB_CursorControl_Proxy::OnMsgSetCursor(PP_Instance instance, | 
| int32_t type, | 
| -                                             PP_Resource custom_image, | 
| +                                             HostResource custom_image, | 
| const PP_Point& hot_spot, | 
| PP_Bool* result) { | 
| *result = ppb_cursor_control_target()->SetCursor( | 
| -      instance, static_cast<PP_CursorType_Dev>(type), custom_image, &hot_spot); | 
| +      instance, static_cast<PP_CursorType_Dev>(type), | 
| +      custom_image.host_resource(), &hot_spot); | 
| } | 
|  | 
| void PPB_CursorControl_Proxy::OnMsgLockCursor(PP_Instance instance, | 
|  |