Chromium Code Reviews| Index: ppapi/proxy/enter_proxy.h |
| =================================================================== |
| --- ppapi/proxy/enter_proxy.h (revision 0) |
| +++ ppapi/proxy/enter_proxy.h (revision 0) |
| @@ -0,0 +1,58 @@ |
| +// 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. |
| + |
| +#ifndef PPAPI_PROXY_ENTER_PROXY_H_ |
| +#define PPAPI_PROXY_ENTER_PROXY_H_ |
| + |
| +#include "base/logging.h" |
| +#include "ppapi/proxy/host_dispatcher.h" |
| +#include "ppapi/proxy/plugin_dispatcher.h" |
| +#include "ppapi/proxy/plugin_resource_tracker.h" |
| +#include "ppapi/thunk/enter.h" |
| + |
| +namespace pp { |
| +namespace proxy { |
| + |
| +// Wrapper around EnterResourceNoLock that takes a host resource. This is used |
| +// when handling messages in the plugin from the host and we need to convert to |
| +// an object in the plugin side corresponding to that. |
| +// |
| +// This never locks since we assume the host Resource is coming from IPC, and |
| +// never logs errors since we assume the host is doing reasonable things. |
| +template<typename ResourceT> |
| +class EnterPluginFromHostResource |
| + : public ::ppapi::thunk::EnterResourceNoLock<ResourceT> { |
| + public: |
| + EnterPluginFromHostResource(const HostResource& host_resource) |
| + : ::ppapi::thunk::EnterResourceNoLock<ResourceT>( |
| + PluginResourceTracker::GetInstance()->PluginResourceForHostResource( |
| + host_resource), |
| + false) { |
| + // Validate that we're in the plugin rather than the host. Otherwise this |
| + // object will do the wrong thing. In the host, the instance should have |
|
piman
2011/06/01 00:41:08
nit: s/In the host/In the plugin/
|
| + // a corresponding plugin dispatcher (assuming the resource is valid). |
| + DCHECK(this->failed() || |
| + PluginDispatcher::GetForInstance(host_resource.instance())); |
| + } |
| +}; |
| + |
| +template<typename ResourceT> |
| +class EnterHostFromHostResource |
| + : public ::ppapi::thunk::EnterResourceNoLock<ResourceT> { |
| + public: |
| + EnterHostFromHostResource(const HostResource& host_resource) |
| + : ::ppapi::thunk::EnterResourceNoLock<ResourceT>( |
| + host_resource.host_resource(), false) { |
| + // Validate that we're in the host rather than the plugin. Otherwise this |
| + // object will do the wrong thing. In the host, the instance should have |
| + // a corresponding host disptacher (assuming the resource is valid). |
| + DCHECK(this->failed() || |
| + HostDispatcher::GetForInstance(host_resource.instance())); |
| + } |
| +}; |
| + |
| +} // namespace proxy |
| +} // namespace pp |
| + |
| +#endif // PPAPI_PROXY_ENTER_PROXY_H_ |
| Property changes on: ppapi/proxy/enter_proxy.h |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |