Chromium Code Reviews| Index: ppapi/shared_impl/resource.h |
| diff --git a/ppapi/shared_impl/resource.h b/ppapi/shared_impl/resource.h |
| index 4b26d2865e1916358dc4f7ff26a6d25f4fc67453..b0876a22133f7168e5864b3c786fd481b6e04342 100644 |
| --- a/ppapi/shared_impl/resource.h |
| +++ b/ppapi/shared_impl/resource.h |
| @@ -69,17 +69,44 @@ FOR_ALL_PPAPI_RESOURCE_APIS(DECLARE_RESOURCE_CLASS) |
| #undef DECLARE_RESOURCE_CLASS |
| } // namespace thunk |
| +// Resources have slightly different registration behaviors when the're an |
| +// in-process ("impl") resource in the host (renderer) process, or when they're |
| +// a proxied resource in the plugin process. This enum differentiates those |
| +// cases. |
| +enum ResourceObjectType { |
| + OBJECT_IS_IMPL, |
| + OBJECT_IS_PROXY |
| +}; |
| + |
| class PPAPI_SHARED_EXPORT Resource : public base::RefCounted<Resource> { |
| public: |
| - // For constructing non-proxied objects. This just takes the associated |
| - // instance, and generates a new resource ID. The host resource will be the |
| - // same as the newly-generated resource ID. |
| - explicit Resource(PP_Instance instance); |
| - |
| - // For constructing proxied objects. This takes the resource generated in |
| - // the host side, stores it, and allocates a "local" resource ID for use in |
| - // the current process. |
| - explicit Resource(const HostResource& host_resource); |
| + // Constructor for impl and non-proxied, instance-only objects. |
| + // |
| + // For constructing "impl" (non-proxied) objects, this just takes the |
| + // associated instance, and generates a new resource ID. The host resource |
| + // will be the same as the newly-generated resource ID. For all objects in |
| + // the renderer (host) process, you'll use this constructor and call it with |
| + // OBJECT_IS_IMPL. |
| + // |
| + // For proxied objects, this will create an "instance-only" object which |
| + // lives only in the plugin and doesn't have a corresponding object in the |
| + // host. If you have a host resource ID, use the constructor below which |
| + // takes that HostResource value. |
| + explicit Resource(ResourceObjectType type, PP_Instance instance); |
| + |
| + // For constructing given a host resource. |
| + // |
| + // For OBJECT_IS_PROXY objects, this takes the resource generated in the host |
| + // side, stores it, and allocates a "local" resource ID for use in the |
| + // current process. |
| + // |
| + // For OBJECT_IS_IMPL, the host resource ID must be 0, since there should be |
| + // no host resource generated (impl objects should generate their own). The |
| + // reason for supporting this constructor at all for the IMPL case is that |
| + // some shared objects use a host resource for both modes to keep things the |
| + // same. |
| + explicit Resource(ResourceObjectType type, |
| + const HostResource& host_resource); |
|
dmichael (off chromium)
2012/02/13 22:24:40
Will this one ever be called with OBJECT_IS_IMPL?
brettw
2012/02/13 22:28:28
Yes, in ppb_file_ref_shared.cc. That class needs t
|
| virtual ~Resource(); |