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

Unified Diff: webkit/plugins/ppapi/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: webkit/plugins/ppapi/resource_tracker.h
diff --git a/webkit/plugins/ppapi/resource_tracker.h b/webkit/plugins/ppapi/resource_tracker.h
index 7fd445bf704e6a2f2af0e2232f4fa99370e16b95..3a33b4f6e5547107343bb395f38837476a2b943e 100644
--- a/webkit/plugins/ppapi/resource_tracker.h
+++ b/webkit/plugins/ppapi/resource_tracker.h
@@ -20,6 +20,7 @@
#include "ppapi/c/pp_resource.h"
#include "ppapi/proxy/interface_id.h"
#include "ppapi/shared_impl/function_group_base.h"
+#include "ppapi/shared_impl/resource_tracker.h"
#include "ppapi/shared_impl/tracker_base.h"
#include "ppapi/shared_impl/var_tracker.h"
@@ -42,36 +43,20 @@ class ResourceTrackerTest;
// us to check resource ID validity and to map them to a specific module.
//
// This object is NOT threadsafe.
-class ResourceTracker : public ::ppapi::TrackerBase {
+class ResourceTracker : public ::ppapi::TrackerBase,
+ public ::ppapi::ResourceTracker {
public:
// Returns the pointer to the singleton object.
static ResourceTracker* Get();
// PP_Resources --------------------------------------------------------------
- // The returned pointer will be NULL if there is no resource. Note that this
- // return value is a scoped_refptr so that we ensure the resource is valid
- // from the point of the lookup to the point that the calling code needs it.
- // Otherwise, the plugin could Release() the resource on another thread and
- // the object will get deleted out from under us.
- scoped_refptr<Resource> GetResource(PP_Resource res) const;
-
- // Increment resource's plugin refcount. See ResourceAndRefCount comments
- // below.
- bool AddRefResource(PP_Resource res);
- bool UnrefResource(PP_Resource res);
-
- // Returns the number of resources associated with this module.
- uint32 GetLiveObjectsForInstance(PP_Instance instance) const;
-
// TrackerBase.
- virtual ::ppapi::ResourceObjectBase* GetResourceAPI(
- PP_Resource res) OVERRIDE;
virtual ::ppapi::FunctionGroupBase* GetFunctionAPI(
PP_Instance pp_instance,
pp::proxy::InterfaceID id) OVERRIDE;
- virtual PP_Instance GetInstanceForResource(PP_Resource resource) OVERRIDE;
virtual ::ppapi::VarTracker* GetVarTracker() OVERRIDE;
+ virtual ::ppapi::ResourceTracker* GetResourceTracker() OVERRIDE;
// PP_Vars -------------------------------------------------------------------
@@ -88,6 +73,10 @@ class ResourceTracker : public ::ppapi::TrackerBase {
::ppapi::NPObjectVar* NPObjectVarForNPObject(PP_Instance instance,
NPObject* np_object);
+ // Returns the number of NPObjectVar's associated with the given instance.
+ // Returns 0 if the instance isn't known.
+ int GetLiveNPObjectVarsForInstance(PP_Instance instance) const;
+
// PP_Modules ----------------------------------------------------------------
// Adds a new plugin module to the list of tracked module, and returns a new
@@ -130,19 +119,7 @@ class ResourceTracker : public ::ppapi::TrackerBase {
// Prohibit creation other then by the Singleton class.
ResourceTracker();
- ~ResourceTracker();
-
- // Called when a new resource is created and associates it with its
- // PluginInstance.
- void ResourceCreated(Resource* resource, PluginInstance* instance);
-
- // Removes a resource from the resource map.
- void ResourceDestroyed(Resource* resource);
-
- // Adds the given resource to the tracker and assigns it a resource ID and
- // refcount of 1. The assigned resource ID will be returned. Used only by the
- // Resource class.
- PP_Resource AddResource(Resource* resource);
+ virtual ~ResourceTracker();
// Force frees all vars and resources associated with the given instance.
// If delete_instance is true, the instance tracking information will also

Powered by Google App Engine
This is Rietveld 408576698