Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Unified Diff: ppapi/proxy/plugin_resource_tracker.h

Issue 7629017: Add a unified resource tracker shared between the proxy and the impl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/proxy/plugin_resource_tracker.h
diff --git a/ppapi/proxy/plugin_resource_tracker.h b/ppapi/proxy/plugin_resource_tracker.h
index f788c6c135b6989e86d0b82b892fea920e4c0bd9..ccc6d700b69e2b037c82d9552453510b955f57db 100644
--- a/ppapi/proxy/plugin_resource_tracker.h
+++ b/ppapi/proxy/plugin_resource_tracker.h
@@ -16,6 +16,7 @@
#include "ppapi/c/pp_var.h"
#include "ppapi/proxy/plugin_var_tracker.h"
#include "ppapi/shared_impl/host_resource.h"
+#include "ppapi/shared_impl/resource_tracker.h"
#include "ppapi/shared_impl/tracker_base.h"
template<typename T> struct DefaultSingletonTraits;
@@ -28,9 +29,9 @@ namespace pp {
namespace proxy {
class PluginDispatcher;
-class PluginResource;
-class PluginResourceTracker : public ::ppapi::TrackerBase {
+class PluginResourceTracker : public ppapi::TrackerBase,
+ public ppapi::ResourceTracker {
public:
// Called by tests that want to specify a specific ResourceTracker. This
// allows them to use a unique one each time and avoids singletons sticking
@@ -41,21 +42,6 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
static PluginResourceTracker* GetInstance();
static ::ppapi::TrackerBase* GetTrackerBaseInstance();
- // Returns the object associated with the given resource ID, or NULL if
- // there isn't one.
- PluginResource* GetResourceObject(PP_Resource pp_resource);
-
- // Adds the given resource object to the tracked list, and returns the
- // plugin-local PP_Resource ID that identifies the resource. Note that this
- // PP_Resource is not valid to send to the host, use
- // PluginResource.host_resource() to get that.
- //
- // The resource tracker will take a reference to the given object.
- PP_Resource AddResource(PluginResource* object);
-
- void AddRefResource(PP_Resource resource);
- void ReleaseResource(PP_Resource resource);
-
// Given a host resource, maps it to an existing plugin resource ID if it
// exists, or returns 0 on failure.
PP_Resource PluginResourceForHostResource(
@@ -71,13 +57,16 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
}
// TrackerBase.
- virtual ppapi::ResourceObjectBase* GetResourceAPI(
- PP_Resource res) OVERRIDE;
virtual ppapi::FunctionGroupBase* GetFunctionAPI(
PP_Instance inst,
pp::proxy::InterfaceID id) OVERRIDE;
- virtual PP_Instance GetInstanceForResource(PP_Resource resource) OVERRIDE;
virtual ppapi::VarTracker* GetVarTracker() OVERRIDE;
+ virtual ppapi::ResourceTracker* GetResourceTracker() OVERRIDE;
+
+ protected:
+ // ResourceTracker overrides.
+ virtual PP_Resource AddResource(ppapi::Resource* object) OVERRIDE;
+ virtual void RemoveResource(ppapi::Resource* object) OVERRIDE;
private:
friend struct DefaultSingletonTraits<PluginResourceTracker>;
@@ -87,21 +76,6 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
PluginResourceTracker();
virtual ~PluginResourceTracker();
- struct ResourceInfo {
- ResourceInfo();
- ResourceInfo(int ref_count, PluginResource* r);
- ResourceInfo(const ResourceInfo& other);
- ~ResourceInfo();
-
- ResourceInfo& operator=(const ResourceInfo& other);
-
- int ref_count;
- scoped_refptr<PluginResource> resource; // May be NULL.
- };
-
- void ReleasePluginResourceRef(const PP_Resource& var,
- bool notify_browser_on_release);
-
// Use the var_tracker_test_override_ instead if it's non-NULL.
//
// TODO(brettw) this should be somehow separated out from here. I'm thinking
@@ -113,18 +87,10 @@ class PluginResourceTracker : public ::ppapi::TrackerBase {
// test implementation is provided.
PluginVarTracker* var_tracker_test_override_;
- // Map of plugin resource IDs to the information tracking that resource.
- typedef std::map<PP_Resource, ResourceInfo> ResourceMap;
- ResourceMap resource_map_;
-
// Map of host instance/resource pairs to a plugin resource ID.
typedef std::map<ppapi::HostResource, PP_Resource> HostResourceMap;
HostResourceMap host_resource_map_;
- // Tracks the last ID we've sent out as a plugin resource so we don't send
- // duplicates.
- PP_Resource last_resource_id_;
-
DISALLOW_COPY_AND_ASSIGN(PluginResourceTracker);
};

Powered by Google App Engine
This is Rietveld 408576698