Chromium Code Reviews| Index: chrome/browser/guest_view/guest_view_manager.cc |
| diff --git a/chrome/browser/guest_view/guest_view_manager.cc b/chrome/browser/guest_view/guest_view_manager.cc |
| index 1e07de105f5ddc1d603123133d849f51eaef1862..a1aaf5f26a05c729d1db56ac2bd9c6efb68b4b4e 100644 |
| --- a/chrome/browser/guest_view/guest_view_manager.cc |
| +++ b/chrome/browser/guest_view/guest_view_manager.cc |
| @@ -75,6 +75,16 @@ GuestViewManager* GuestViewManager::FromBrowserContext( |
| return guest_manager; |
| } |
| +content::WebContents* GuestViewManager::GetGuestByInstanceIDSafely( |
| + int guest_instance_id, |
| + int embedder_render_process_id) { |
| + if (!CanEmbedderAccessInstanceIDMaybeKill(embedder_render_process_id, |
| + guest_instance_id)) { |
| + return NULL; |
| + } |
| + return GetGuestByInstanceID(guest_instance_id, embedder_render_process_id); |
| +} |
| + |
| int GuestViewManager::GetNextInstanceID() { |
| return ++current_instance_id_; |
| } |
| @@ -97,13 +107,53 @@ void GuestViewManager::RemoveGuest(int guest_instance_id) { |
| guest_web_contents_by_instance_id_.erase(it); |
| } |
| -content::WebContents* GuestViewManager::GetGuestByInstanceID( |
| +void GuestViewManager::MaybeGetGuestByInstanceIDOrKill( |
| int guest_instance_id, |
| - int embedder_render_process_id) { |
| + int embedder_render_process_id, |
| + const GuestByInstanceIDCallback& callback) { |
| if (!CanEmbedderAccessInstanceIDMaybeKill(embedder_render_process_id, |
| guest_instance_id)) { |
| - return NULL; |
| + // If we kill the embedder, then don't bother calling back. |
| + return; |
| } |
| + content::WebContents* guest_web_contents = |
| + GetGuestByInstanceID(guest_instance_id, embedder_render_process_id); |
| + callback.Run(guest_web_contents); |
| +} |
| + |
| +SiteInstance* GuestViewManager::GetGuestSiteInstance( |
| + const GURL& guest_site) { |
| + for (GuestInstanceMap::const_iterator it = |
| + guest_web_contents_by_instance_id_.begin(); |
| + it != guest_web_contents_by_instance_id_.end(); ++it) { |
| + if (it->second->GetSiteInstance()->GetSiteURL() == guest_site) |
| + return it->second->GetSiteInstance(); |
| + } |
| + return NULL; |
| +} |
| + |
| +bool GuestViewManager::ForEachGuest(WebContents* embedder_web_contents, |
| + const GuestCallback& callback) { |
| + for (GuestInstanceMap::iterator it = |
| + guest_web_contents_by_instance_id_.begin(); |
| + it != guest_web_contents_by_instance_id_.end(); ++it) { |
| + WebContents* guest = it->second; |
| + if (embedder_web_contents != guest->GetEmbedderWebContents()) |
| + continue; |
| + |
| + if (callback.Run(guest)) |
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| +void GuestViewManager::AddRenderProcessHostID(int render_process_host_id) { |
|
lazyboy
2014/05/06 18:03:54
nit: try to match declaration and definition order
Fady Samuel
2014/05/06 18:13:03
It is. AddRenderProcessHostID (which is private) i
lazyboy
2014/05/06 18:16:54
Oh sorry, I got confused with the other GetGuest*
|
| + render_process_host_id_multiset_.insert(render_process_host_id); |
| +} |
| + |
| +content::WebContents* GuestViewManager::GetGuestByInstanceID( |
| + int guest_instance_id, |
| + int embedder_render_process_id) { |
| GuestInstanceMap::const_iterator it = |
| guest_web_contents_by_instance_id_.find(guest_instance_id); |
| if (it == guest_web_contents_by_instance_id_.end()) |
| @@ -155,36 +205,6 @@ bool GuestViewManager::CanEmbedderAccessInstanceID( |
| return CanEmbedderAccessGuest(embedder_render_process_id, guest_view); |
| } |
| -SiteInstance* GuestViewManager::GetGuestSiteInstance( |
| - const GURL& guest_site) { |
| - for (GuestInstanceMap::const_iterator it = |
| - guest_web_contents_by_instance_id_.begin(); |
| - it != guest_web_contents_by_instance_id_.end(); ++it) { |
| - if (it->second->GetSiteInstance()->GetSiteURL() == guest_site) |
| - return it->second->GetSiteInstance(); |
| - } |
| - return NULL; |
| -} |
| - |
| -bool GuestViewManager::ForEachGuest(WebContents* embedder_web_contents, |
| - const GuestCallback& callback) { |
| - for (GuestInstanceMap::iterator it = |
| - guest_web_contents_by_instance_id_.begin(); |
| - it != guest_web_contents_by_instance_id_.end(); ++it) { |
| - WebContents* guest = it->second; |
| - if (embedder_web_contents != guest->GetEmbedderWebContents()) |
| - continue; |
| - |
| - if (callback.Run(guest)) |
| - return true; |
| - } |
| - return false; |
| -} |
| - |
| -void GuestViewManager::AddRenderProcessHostID(int render_process_host_id) { |
| - render_process_host_id_multiset_.insert(render_process_host_id); |
| -} |
| - |
| bool GuestViewManager::CanEmbedderAccessGuest(int embedder_render_process_id, |
| GuestViewBase* guest) { |
| // The embedder can access the guest if it has not been attached and its |