| 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_;
|
|
|