| 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 #ifndef PPAPI_SHARED_IMPL_RESOURCE_H_ | 5 #ifndef PPAPI_SHARED_IMPL_RESOURCE_H_ |
| 6 #define PPAPI_SHARED_IMPL_RESOURCE_H_ | 6 #define PPAPI_SHARED_IMPL_RESOURCE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> // For NULL. | 8 #include <stddef.h> // For NULL. |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // For constructing "impl" (non-proxied) objects, this just takes the | 100 // For constructing "impl" (non-proxied) objects, this just takes the |
| 101 // associated instance, and generates a new resource ID. The host resource | 101 // associated instance, and generates a new resource ID. The host resource |
| 102 // will be the same as the newly-generated resource ID. For all objects in | 102 // will be the same as the newly-generated resource ID. For all objects in |
| 103 // the renderer (host) process, you'll use this constructor and call it with | 103 // the renderer (host) process, you'll use this constructor and call it with |
| 104 // OBJECT_IS_IMPL. | 104 // OBJECT_IS_IMPL. |
| 105 // | 105 // |
| 106 // For proxied objects, this will create an "instance-only" object which | 106 // For proxied objects, this will create an "instance-only" object which |
| 107 // lives only in the plugin and doesn't have a corresponding object in the | 107 // lives only in the plugin and doesn't have a corresponding object in the |
| 108 // host. If you have a host resource ID, use the constructor below which | 108 // host. If you have a host resource ID, use the constructor below which |
| 109 // takes that HostResource value. | 109 // takes that HostResource value. |
| 110 explicit Resource(ResourceObjectType type, PP_Instance instance); | 110 Resource(ResourceObjectType type, PP_Instance instance); |
| 111 | 111 |
| 112 // For constructing given a host resource. | 112 // For constructing given a host resource. |
| 113 // | 113 // |
| 114 // For OBJECT_IS_PROXY objects, this takes the resource generated in the host | 114 // For OBJECT_IS_PROXY objects, this takes the resource generated in the host |
| 115 // side, stores it, and allocates a "local" resource ID for use in the | 115 // side, stores it, and allocates a "local" resource ID for use in the |
| 116 // current process. | 116 // current process. |
| 117 // | 117 // |
| 118 // For OBJECT_IS_IMPL, the host resource ID must be 0, since there should be | 118 // For OBJECT_IS_IMPL, the host resource ID must be 0, since there should be |
| 119 // no host resource generated (impl objects should generate their own). The | 119 // no host resource generated (impl objects should generate their own). The |
| 120 // reason for supporting this constructor at all for the IMPL case is that | 120 // reason for supporting this constructor at all for the IMPL case is that |
| 121 // some shared objects use a host resource for both modes to keep things the | 121 // some shared objects use a host resource for both modes to keep things the |
| 122 // same. | 122 // same. |
| 123 explicit Resource(ResourceObjectType type, | 123 Resource(ResourceObjectType type, const HostResource& host_resource); |
| 124 const HostResource& host_resource); | 124 |
| 125 // Constructor for untracked objects. These have no associated instance. Use |
| 126 // this with care, as the object is likely to persist for the lifetime of the |
| 127 // plugin module. This is appropriate in some rare cases, like the |
| 128 // PPB_MessageLoop resource for the main thread. |
| 129 struct Untracked {}; |
| 130 explicit Resource(Untracked); |
| 125 | 131 |
| 126 virtual ~Resource(); | 132 virtual ~Resource(); |
| 127 | 133 |
| 128 PP_Instance pp_instance() const { return host_resource_.instance(); } | 134 PP_Instance pp_instance() const { return host_resource_.instance(); } |
| 129 | 135 |
| 130 // Returns the resource ID for this object in the current process without | 136 // Returns the resource ID for this object in the current process without |
| 131 // adjusting the refcount. See also GetReference(). | 137 // adjusting the refcount. See also GetReference(). |
| 132 PP_Resource pp_resource() const { return pp_resource_; } | 138 PP_Resource pp_resource() const { return pp_resource_; } |
| 133 | 139 |
| 134 // Returns the host resource which identifies the resource in the host side | 140 // Returns the host resource which identifies the resource in the host side |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 #define DEFINE_RESOURCE_CAST(RESOURCE) \ | 207 #define DEFINE_RESOURCE_CAST(RESOURCE) \ |
| 202 template<> inline thunk::RESOURCE* Resource::GetAs() { \ | 208 template<> inline thunk::RESOURCE* Resource::GetAs() { \ |
| 203 return As##RESOURCE(); \ | 209 return As##RESOURCE(); \ |
| 204 } | 210 } |
| 205 FOR_ALL_PPAPI_RESOURCE_APIS(DEFINE_RESOURCE_CAST) | 211 FOR_ALL_PPAPI_RESOURCE_APIS(DEFINE_RESOURCE_CAST) |
| 206 #undef DEFINE_RESOURCE_CAST | 212 #undef DEFINE_RESOURCE_CAST |
| 207 | 213 |
| 208 } // namespace ppapi | 214 } // namespace ppapi |
| 209 | 215 |
| 210 #endif // PPAPI_SHARED_IMPL_RESOURCE_H_ | 216 #endif // PPAPI_SHARED_IMPL_RESOURCE_H_ |
| OLD | NEW |