Chromium Code Reviews| Index: chrome/browser/extensions/extension_process_manager.cc |
| diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc |
| index 1f8c9fb8e916a5a91aa6f6623354f9c3fbc8b8dc..87cc6077b443e8e22dfebb1c7bc60cd4a93b7dae 100644 |
| --- a/chrome/browser/extensions/extension_process_manager.cc |
| +++ b/chrome/browser/extensions/extension_process_manager.cc |
| @@ -395,6 +395,18 @@ void ExtensionProcessManager::RegisterRenderViewHost( |
| IncrementLazyKeepaliveCountForView(render_view_host); |
| } |
| +void ExtensionProcessManager::ReregisterRenderViewHosts( |
| + const std::string& extension_id) { |
| + // Re-register all RenderViews for this extension. We do this to restore |
| + // the lazy_keepalive_count (if any) to properly reflect the number of open |
| + // views. |
| + for (ExtensionRenderViews::const_iterator it = all_extension_views_.begin(); |
| + it != all_extension_views_.end(); ++it) { |
| + if (GetExtensionID(it->first) == extension_id) |
| + IncrementLazyKeepaliveCountForView(it->first); |
| + } |
| +} |
| + |
| SiteInstance* ExtensionProcessManager::GetSiteInstanceForURL(const GURL& url) { |
| return site_instance_->GetRelatedSiteInstance(url); |
| } |
| @@ -591,6 +603,10 @@ void ExtensionProcessManager::Observe( |
| const Extension* extension = |
| content::Details<const Extension>(details).ptr(); |
| CreateBackgroundHostForExtensionLoad(this, extension); |
| + |
| + if (extension->is_platform_app() && |
| + service->IsBeingReloaded(extension->id())) |
| + ReregisterRenderViewHosts(extension->id()); |
|
benwells
2013/09/20 07:35:31
This makes me uncomfortable. The render view hosts
tmdiep
2013/09/20 11:07:36
Incrementing the render view hosts actually preven
benwells
2013/09/20 11:22:47
That was the conclusion I came to today as well. L
|
| } |
| break; |
| } |
| @@ -776,15 +792,7 @@ void ExtensionProcessManager::CloseBackgroundHosts() { |
| void ExtensionProcessManager::ClearBackgroundPageData( |
| const std::string& extension_id) { |
| background_page_data_.erase(extension_id); |
| - |
| - // Re-register all RenderViews for this extension. We do this to restore |
| - // the lazy_keepalive_count (if any) to properly reflect the number of open |
| - // views. |
| - for (ExtensionRenderViews::const_iterator it = all_extension_views_.begin(); |
| - it != all_extension_views_.end(); ++it) { |
| - if (GetExtensionID(it->first) == extension_id) |
| - IncrementLazyKeepaliveCountForView(it->first); |
| - } |
| + ReregisterRenderViewHosts(extension_id); |
| } |
| bool ExtensionProcessManager::DeferLoadingBackgroundHosts() const { |