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 |