Index: ppapi/proxy/plugin_resource_tracker.h |
=================================================================== |
--- ppapi/proxy/plugin_resource_tracker.h (revision 106146) |
+++ ppapi/proxy/plugin_resource_tracker.h (working copy) |
@@ -15,6 +15,7 @@ |
#include "ppapi/c/pp_stdint.h" |
#include "ppapi/c/pp_resource.h" |
#include "ppapi/c/pp_var.h" |
+#include "ppapi/proxy/plugin_var_tracker.h" |
#include "ppapi/proxy/ppapi_proxy_export.h" |
#include "ppapi/shared_impl/host_resource.h" |
#include "ppapi/shared_impl/resource_tracker.h" |
@@ -33,9 +34,13 @@ |
class PPAPI_PROXY_EXPORT PluginResourceTracker : public TrackerBase, |
public ResourceTracker { |
public: |
- PluginResourceTracker(); |
- virtual ~PluginResourceTracker(); |
+ // Called by tests that want to specify a specific ResourceTracker. This |
+ // allows them to use a unique one each time and avoids singletons sticking |
+ // around across tests. |
+ static void SetInstanceForTest(PluginResourceTracker* tracker); |
+ // Returns the global singleton resource tracker for the plugin. |
+ static PluginResourceTracker* GetInstance(); |
static TrackerBase* GetTrackerBaseInstance(); |
// Given a host resource, maps it to an existing plugin resource ID if it |
@@ -43,9 +48,20 @@ |
PP_Resource PluginResourceForHostResource( |
const HostResource& resource) const; |
+ PluginVarTracker& var_tracker() { |
+ return var_tracker_test_override_ ? *var_tracker_test_override_ |
+ : var_tracker_; |
+ } |
+ |
+ void set_var_tracker_test_override(PluginVarTracker* t) { |
+ var_tracker_test_override_ = t; |
+ } |
+ |
// TrackerBase. |
virtual FunctionGroupBase* GetFunctionAPI(PP_Instance inst, |
InterfaceID id) OVERRIDE; |
+ virtual VarTracker* GetVarTracker() OVERRIDE; |
+ virtual ResourceTracker* GetResourceTracker() OVERRIDE; |
virtual PP_Module GetModuleForInstance(PP_Instance instance) OVERRIDE; |
protected: |
@@ -54,6 +70,24 @@ |
virtual void RemoveResource(Resource* object) OVERRIDE; |
private: |
+ friend struct DefaultSingletonTraits<PluginResourceTracker>; |
+ friend class PluginResourceTrackerTest; |
+ friend class PluginProxyTestHarness; |
+ |
+ PluginResourceTracker(); |
+ virtual ~PluginResourceTracker(); |
+ |
+ // 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 |
+ // of some global object that manages PPAPI globals, including separate var |
+ // and resource trackers. |
+ PluginVarTracker var_tracker_; |
+ |
+ // Non-owning pointer to a var tracker mock used by tests. NULL when no |
+ // test implementation is provided. |
+ PluginVarTracker* var_tracker_test_override_; |
+ |
// Map of host instance/resource pairs to a plugin resource ID. |
typedef std::map<HostResource, PP_Resource> HostResourceMap; |
HostResourceMap host_resource_map_; |