diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-10 17:23:57 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-10 17:23:57 +0000 |
commit | 0346023c3a4180f8cf67d4e825beb87bdbd98f73 (patch) | |
tree | 333733068c017be1aa53e0af945c0a0cecc6318d /ppapi/proxy/ppb_instance_proxy.cc | |
parent | cf58c966ebdca1fcf2adbbe4a2f5bad875a8382a (diff) | |
download | chromium_src-0346023c3a4180f8cf67d4e825beb87bdbd98f73.zip chromium_src-0346023c3a4180f8cf67d4e825beb87bdbd98f73.tar.gz chromium_src-0346023c3a4180f8cf67d4e825beb87bdbd98f73.tar.bz2 |
Convert URLUtil to the thunk system.
This removes some duplicate code between the proxy and the impl.
Review URL: http://codereview.chromium.org/8159012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104741 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/ppb_instance_proxy.cc')
-rw-r--r-- | ppapi/proxy/ppb_instance_proxy.cc | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc index d1fa264..d26c29f 100644 --- a/ppapi/proxy/ppb_instance_proxy.cc +++ b/ppapi/proxy/ppb_instance_proxy.cc @@ -14,6 +14,7 @@ #include "ppapi/proxy/plugin_resource_tracker.h" #include "ppapi/proxy/ppapi_messages.h" #include "ppapi/proxy/serialized_var.h" +#include "ppapi/shared_impl/url_util_impl.h" #include "ppapi/thunk/enter.h" #include "ppapi/thunk/thunk.h" @@ -99,6 +100,16 @@ bool PPB_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { OnMsgLockMouse) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_UnlockMouse, OnMsgUnlockMouse) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_ResolveRelativeToDocument, + OnMsgResolveRelativeToDocument) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanRequest, + OnMsgDocumentCanRequest) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanAccessDocument, + OnMsgDocumentCanAccessDocument) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetDocumentURL, + OnMsgGetDocumentURL) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetPluginInstanceURL, + OnMsgGetPluginInstanceURL) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -280,6 +291,56 @@ void PPB_Instance_Proxy::SubscribeToPolicyUpdates(PP_Instance instance) { NOTIMPLEMENTED(); } +PP_Var PPB_Instance_Proxy::ResolveRelativeToDocument( + PP_Instance instance, + PP_Var relative, + PP_URLComponents_Dev* components) { + ReceiveSerializedVarReturnValue result; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_ResolveRelativeToDocument( + INTERFACE_ID_PPB_INSTANCE, instance, + SerializedVarSendInput(dispatcher(), relative), + &result)); + return URLUtilImpl::ConvertComponentsAndReturnURL(result.Return(dispatcher()), + components); +} + +PP_Bool PPB_Instance_Proxy::DocumentCanRequest(PP_Instance instance, + PP_Var url) { + PP_Bool result = PP_FALSE; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_DocumentCanRequest( + INTERFACE_ID_PPB_INSTANCE, instance, + SerializedVarSendInput(dispatcher(), url), + &result)); + return result; +} + +PP_Bool PPB_Instance_Proxy::DocumentCanAccessDocument(PP_Instance instance, + PP_Instance target) { + PP_Bool result = PP_FALSE; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_DocumentCanAccessDocument( + INTERFACE_ID_PPB_INSTANCE, instance, target, &result)); + return result; +} + +PP_Var PPB_Instance_Proxy::GetDocumentURL(PP_Instance instance, + PP_URLComponents_Dev* components) { + ReceiveSerializedVarReturnValue result; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_GetDocumentURL( + INTERFACE_ID_PPB_INSTANCE, instance, &result)); + return URLUtilImpl::ConvertComponentsAndReturnURL(result.Return(dispatcher()), + components); +} + +PP_Var PPB_Instance_Proxy::GetPluginInstanceURL( + PP_Instance instance, + PP_URLComponents_Dev* components) { + ReceiveSerializedVarReturnValue result; + dispatcher()->Send(new PpapiHostMsg_PPBInstance_GetPluginInstanceURL( + INTERFACE_ID_PPB_INSTANCE, instance, &result)); + return URLUtilImpl::ConvertComponentsAndReturnURL(result.Return(dispatcher()), + components); +} + void PPB_Instance_Proxy::PostMessage(PP_Instance instance, PP_Var message) { dispatcher()->Send(new PpapiHostMsg_PPBInstance_PostMessage( @@ -453,5 +514,54 @@ void PPB_Instance_Proxy::OnMsgUnlockMouse(PP_Instance instance) { enter.functions()->UnlockMouse(instance); } +void PPB_Instance_Proxy::OnMsgResolveRelativeToDocument( + PP_Instance instance, + SerializedVarReceiveInput relative, + SerializedVarReturnValue result) { + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, true); + if (enter.succeeded()) { + result.Return(dispatcher(), + enter.functions()->ResolveRelativeToDocument( + instance, relative.Get(dispatcher()), NULL)); + } +} + +void PPB_Instance_Proxy::OnMsgDocumentCanRequest(PP_Instance instance, + SerializedVarReceiveInput url, + PP_Bool* result) { + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, true); + if (enter.succeeded()) { + *result = enter.functions()->DocumentCanRequest(instance, + url.Get(dispatcher())); + } +} + +void PPB_Instance_Proxy::OnMsgDocumentCanAccessDocument(PP_Instance active, + PP_Instance target, + PP_Bool* result) { + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(active, true); + if (enter.succeeded()) + *result = enter.functions()->DocumentCanAccessDocument(active, target); +} + +void PPB_Instance_Proxy::OnMsgGetDocumentURL(PP_Instance instance, + SerializedVarReturnValue result) { + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, true); + if (enter.succeeded()) { + result.Return(dispatcher(), + enter.functions()->GetDocumentURL(instance, NULL)); + } +} + +void PPB_Instance_Proxy::OnMsgGetPluginInstanceURL( + PP_Instance instance, + SerializedVarReturnValue result) { + EnterFunctionNoLock<PPB_Instance_FunctionAPI> enter(instance, true); + if (enter.succeeded()) { + result.Return(dispatcher(), + enter.functions()->GetPluginInstanceURL(instance, NULL)); + } +} + } // namespace proxy } // namespace ppapi |