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 { |