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