Chromium Code Reviews| Index: content/child/np_channel_base.cc |
| diff --git a/content/child/np_channel_base.cc b/content/child/np_channel_base.cc |
| index 81b848b0866a638681a66d657898b8422b653991..2ca82a6706b42cd0de1ea906379826ec09fb26f9 100644 |
| --- a/content/child/np_channel_base.cc |
| +++ b/content/child/np_channel_base.cc |
| @@ -72,6 +72,7 @@ NPChannelBase::NPChannelBase() |
| non_npobject_count_(0), |
| peer_pid_(0), |
| in_remove_route_(false), |
| + default_owner_(NULL), |
| channel_valid_(false), |
| in_unblock_dispatch_(0), |
| send_unblocking_only_during_unblock_dispatch_(false) { |
| @@ -271,21 +272,15 @@ void NPChannelBase::OnChannelError() { |
| } |
| } |
| -NPObject* NPChannelBase::GetExistingNPObjectProxy(int route_id) { |
| - ProxyMap::iterator iter = proxy_map_.find(route_id); |
| - return iter != proxy_map_.end() ? iter->second : NULL; |
| -} |
| - |
| -int NPChannelBase::GetExistingRouteForNPObjectStub(NPObject* npobject) { |
| - StubMap::iterator iter = stub_map_.find(npobject); |
| - return iter != stub_map_.end() ? iter->second : MSG_ROUTING_NONE; |
| -} |
| - |
| void NPChannelBase::AddMappingForNPObjectProxy(int route_id, |
| NPObject* object) { |
| proxy_map_[route_id] = object; |
| } |
| +void NPChannelBase::RemoveMappingForNPObjectProxy(int route_id) { |
| + proxy_map_.erase(route_id); |
| +} |
| + |
| void NPChannelBase::AddMappingForNPObjectStub(int route_id, |
| NPObject* object) { |
| DCHECK(object != NULL); |
| @@ -298,8 +293,42 @@ void NPChannelBase::RemoveMappingForNPObjectStub(int route_id, |
| stub_map_.erase(object); |
| } |
| -void NPChannelBase::RemoveMappingForNPObjectProxy(int route_id) { |
| - proxy_map_.erase(route_id); |
| +void NPChannelBase::AddMappingForNPObjectOwner(int route_id, |
| + struct _NPP* owner) { |
| + DCHECK(owner != NULL); |
| + route_to_owner_[route_id] = owner; |
| + owner_to_route_[owner] = route_id; |
| +} |
| + |
| +void NPChannelBase::AddDefaultNPObjectOwner(struct _NPP* owner) { |
|
darin (slow to review)
2013/06/18 23:26:24
nit: Since this method only supports retaining a s
Wez
2013/06/19 05:17:54
Done.
|
| + DCHECK(owner != NULL); |
| + default_owner_ = owner; |
| +} |
| + |
| +void NPChannelBase::RemoveMappingForNPObjectOwner(int route_id) { |
| + DCHECK(route_to_owner_.find(route_id) != route_to_owner_.end()); |
| + owner_to_route_.erase(route_to_owner_[route_id]); |
| + route_to_owner_.erase(route_id); |
| +} |
| + |
| +NPObject* NPChannelBase::GetExistingNPObjectProxy(int route_id) { |
| + ProxyMap::iterator iter = proxy_map_.find(route_id); |
| + return iter != proxy_map_.end() ? iter->second : NULL; |
| +} |
| + |
| +int NPChannelBase::GetExistingRouteForNPObjectStub(NPObject* npobject) { |
| + StubMap::iterator iter = stub_map_.find(npobject); |
| + return iter != stub_map_.end() ? iter->second : MSG_ROUTING_NONE; |
| +} |
| + |
| +NPP NPChannelBase::GetExistingNPObjectOwner(int route_id) { |
| + RouteToOwnerMap::iterator iter = route_to_owner_.find(route_id); |
| + return iter != route_to_owner_.end() ? iter->second : default_owner_; |
| +} |
| + |
| +int NPChannelBase::GetExistingRouteForNPObjectOwner(NPP owner) { |
| + OwnerToRouteMap::iterator iter = owner_to_route_.find(owner); |
| + return iter != owner_to_route_.end() ? iter->second : MSG_ROUTING_NONE; |
| } |
| } // namespace content |