Index: ppapi/proxy/plugin_var_tracker.cc |
=================================================================== |
--- ppapi/proxy/plugin_var_tracker.cc (revision 72840) |
+++ ppapi/proxy/plugin_var_tracker.cc (working copy) |
@@ -15,6 +15,9 @@ |
namespace { |
+// When non-NULL, this object overrides the VarTrackerSingleton. |
+PluginVarTracker* var_tracker_override = NULL; |
+ |
class RefCountedString : public base::RefCounted<RefCountedString> { |
public: |
RefCountedString() { |
@@ -64,7 +67,15 @@ |
PluginVarTracker::~PluginVarTracker() { |
} |
+// static |
+void PluginVarTracker::SetInstanceForTest(PluginVarTracker* tracker) { |
+ var_tracker_override = tracker; |
+} |
+ |
+// static |
PluginVarTracker* PluginVarTracker::GetInstance() { |
+ if (var_tracker_override) |
+ return var_tracker_override; |
return Singleton<PluginVarTracker>::get(); |
} |
@@ -221,6 +232,24 @@ |
return ret; |
} |
+void PluginVarTracker::ReleaseHostObject(Sender* sender, |
+ const PP_Var& host_object) { |
+ // Convert the host object to a normal var valid in the plugin. |
+ DCHECK(host_object.type == PP_VARTYPE_OBJECT); |
+ HostVarToPluginVarMap::iterator found = host_var_to_plugin_var_.find( |
+ HostVar(sender, host_object.value.as_id)); |
+ if (found == host_var_to_plugin_var_.end()) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ // Now just release the object like normal. |
+ PP_Var plugin_object; |
+ plugin_object.type = PP_VARTYPE_OBJECT; |
+ plugin_object.value.as_id = found->second; |
+ Release(plugin_object); |
+} |
+ |
int PluginVarTracker::GetRefCountForObject(const PP_Var& plugin_object) { |
PluginVarInfoMap::iterator found = plugin_var_info_.find( |
plugin_object.value.as_id); |