| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/proxy/ppb_instance_proxy.h" | 5 #include "ppapi/proxy/ppb_instance_proxy.h" |
| 6 | 6 |
| 7 #include "ppapi/c/pp_errors.h" | 7 #include "ppapi/c/pp_errors.h" |
| 8 #include "ppapi/c/pp_time.h" | 8 #include "ppapi/c/pp_time.h" |
| 9 #include "ppapi/c/pp_var.h" | 9 #include "ppapi/c/pp_var.h" |
| 10 #include "ppapi/c/ppb_audio_config.h" | 10 #include "ppapi/c/ppb_audio_config.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_ResolveRelativeToDocument, | 117 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_ResolveRelativeToDocument, |
| 118 OnHostMsgResolveRelativeToDocument) | 118 OnHostMsgResolveRelativeToDocument) |
| 119 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanRequest, | 119 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanRequest, |
| 120 OnHostMsgDocumentCanRequest) | 120 OnHostMsgDocumentCanRequest) |
| 121 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanAccessDocument, | 121 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanAccessDocument, |
| 122 OnHostMsgDocumentCanAccessDocument) | 122 OnHostMsgDocumentCanAccessDocument) |
| 123 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetDocumentURL, | 123 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetDocumentURL, |
| 124 OnHostMsgGetDocumentURL) | 124 OnHostMsgGetDocumentURL) |
| 125 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetPluginInstanceURL, | 125 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetPluginInstanceURL, |
| 126 OnHostMsgGetPluginInstanceURL) | 126 OnHostMsgGetPluginInstanceURL) |
| 127 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SetCursor, |
| 128 OnHostMsgSetCursor) |
| 127 | 129 |
| 128 // Host -> Plugin messages. | 130 // Host -> Plugin messages. |
| 129 IPC_MESSAGE_HANDLER(PpapiMsg_PPBInstance_MouseLockComplete, | 131 IPC_MESSAGE_HANDLER(PpapiMsg_PPBInstance_MouseLockComplete, |
| 130 OnPluginMsgMouseLockComplete) | 132 OnPluginMsgMouseLockComplete) |
| 131 | 133 |
| 132 IPC_MESSAGE_UNHANDLED(handled = false) | 134 IPC_MESSAGE_UNHANDLED(handled = false) |
| 133 IPC_END_MESSAGE_MAP() | 135 IPC_END_MESSAGE_MAP() |
| 134 return handled; | 136 return handled; |
| 135 } | 137 } |
| 136 | 138 |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 components); | 398 components); |
| 397 } | 399 } |
| 398 | 400 |
| 399 void PPB_Instance_Proxy::PostMessage(PP_Instance instance, | 401 void PPB_Instance_Proxy::PostMessage(PP_Instance instance, |
| 400 PP_Var message) { | 402 PP_Var message) { |
| 401 dispatcher()->Send(new PpapiHostMsg_PPBInstance_PostMessage( | 403 dispatcher()->Send(new PpapiHostMsg_PPBInstance_PostMessage( |
| 402 API_ID_PPB_INSTANCE, | 404 API_ID_PPB_INSTANCE, |
| 403 instance, SerializedVarSendInput(dispatcher(), message))); | 405 instance, SerializedVarSendInput(dispatcher(), message))); |
| 404 } | 406 } |
| 405 | 407 |
| 408 PP_Bool PPB_Instance_Proxy::SetCursor(PP_Instance instance, |
| 409 PP_MouseCursor_Type type, |
| 410 PP_Resource image, |
| 411 const PP_Point* hot_spot) { |
| 412 // Some of these parameters are important for security. This check is in the |
| 413 // plugin process just for the convenience of the caller (since we don't |
| 414 // bother returning errors from the other process with a sync message). The |
| 415 // parameters will be validated again in the renderer. |
| 416 if (!ValidateSetCursorParams(type, image, hot_spot)) |
| 417 return PP_FALSE; |
| 418 |
| 419 HostResource image_host_resource; |
| 420 if (image) { |
| 421 Resource* cursor_image = |
| 422 PpapiGlobals::Get()->GetResourceTracker()->GetResource(image); |
| 423 if (!cursor_image || cursor_image->pp_instance() != instance) |
| 424 return PP_FALSE; |
| 425 image_host_resource = cursor_image->host_resource(); |
| 426 } |
| 427 |
| 428 dispatcher()->Send(new PpapiHostMsg_PPBInstance_SetCursor( |
| 429 API_ID_PPB_INSTANCE, instance, static_cast<int32_t>(type), |
| 430 image_host_resource, hot_spot ? *hot_spot : PP_MakePoint(0, 0))); |
| 431 return PP_TRUE; |
| 432 } |
| 433 |
| 406 int32_t PPB_Instance_Proxy::LockMouse(PP_Instance instance, | 434 int32_t PPB_Instance_Proxy::LockMouse(PP_Instance instance, |
| 407 PP_CompletionCallback callback) { | 435 PP_CompletionCallback callback) { |
| 408 if (!callback.func) | 436 if (!callback.func) |
| 409 return PP_ERROR_BADARGUMENT; | 437 return PP_ERROR_BADARGUMENT; |
| 410 | 438 |
| 411 // Save the mouse callback on the instance data. | 439 // Save the mouse callback on the instance data. |
| 412 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> | 440 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> |
| 413 GetInstanceData(instance); | 441 GetInstanceData(instance); |
| 414 if (!data) | 442 if (!data) |
| 415 return PP_ERROR_BADARGUMENT; | 443 return PP_ERROR_BADARGUMENT; |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 void PPB_Instance_Proxy::OnHostMsgGetPluginInstanceURL( | 658 void PPB_Instance_Proxy::OnHostMsgGetPluginInstanceURL( |
| 631 PP_Instance instance, | 659 PP_Instance instance, |
| 632 SerializedVarReturnValue result) { | 660 SerializedVarReturnValue result) { |
| 633 EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, true); | 661 EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, true); |
| 634 if (enter.succeeded()) { | 662 if (enter.succeeded()) { |
| 635 result.Return(dispatcher(), | 663 result.Return(dispatcher(), |
| 636 enter.functions()->GetPluginInstanceURL(instance, NULL)); | 664 enter.functions()->GetPluginInstanceURL(instance, NULL)); |
| 637 } | 665 } |
| 638 } | 666 } |
| 639 | 667 |
| 668 void PPB_Instance_Proxy::OnHostMsgSetCursor( |
| 669 PP_Instance instance, |
| 670 int32_t type, |
| 671 const ppapi::HostResource& custom_image, |
| 672 const PP_Point& hot_spot) { |
| 673 EnterInstanceNoLock enter(instance, true); |
| 674 if (enter.succeeded()) { |
| 675 enter.functions()->SetCursor( |
| 676 instance, static_cast<PP_MouseCursor_Type>(type), |
| 677 custom_image.host_resource(), &hot_spot); |
| 678 } |
| 679 } |
| 680 |
| 640 void PPB_Instance_Proxy::OnPluginMsgMouseLockComplete(PP_Instance instance, | 681 void PPB_Instance_Proxy::OnPluginMsgMouseLockComplete(PP_Instance instance, |
| 641 int32_t result) { | 682 int32_t result) { |
| 642 // Save the mouse callback on the instance data. | 683 // Save the mouse callback on the instance data. |
| 643 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> | 684 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> |
| 644 GetInstanceData(instance); | 685 GetInstanceData(instance); |
| 645 if (!data) | 686 if (!data) |
| 646 return; // Instance was probably deleted. | 687 return; // Instance was probably deleted. |
| 647 if (!data->mouse_lock_callback.func) { | 688 if (!data->mouse_lock_callback.func) { |
| 648 NOTREACHED(); | 689 NOTREACHED(); |
| 649 return; | 690 return; |
| 650 } | 691 } |
| 651 PP_RunAndClearCompletionCallback(&data->mouse_lock_callback, result); | 692 PP_RunAndClearCompletionCallback(&data->mouse_lock_callback, result); |
| 652 } | 693 } |
| 653 | 694 |
| 654 void PPB_Instance_Proxy::MouseLockCompleteInHost(int32_t result, | 695 void PPB_Instance_Proxy::MouseLockCompleteInHost(int32_t result, |
| 655 PP_Instance instance) { | 696 PP_Instance instance) { |
| 656 dispatcher()->Send(new PpapiMsg_PPBInstance_MouseLockComplete( | 697 dispatcher()->Send(new PpapiMsg_PPBInstance_MouseLockComplete( |
| 657 API_ID_PPB_INSTANCE, instance, result)); | 698 API_ID_PPB_INSTANCE, instance, result)); |
| 658 } | 699 } |
| 659 | 700 |
| 660 } // namespace proxy | 701 } // namespace proxy |
| 661 } // namespace ppapi | 702 } // namespace ppapi |
| OLD | NEW |