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 a1f637a7e1df05d93a3f34823c9352cd429b31ee..6188dad566e5f8eebf64a3808c5280cfa341ee49 100644 |
| --- a/chrome/browser/extensions/extension_process_manager.cc |
| +++ b/chrome/browser/extensions/extension_process_manager.cc |
| @@ -414,22 +414,13 @@ int ExtensionProcessManager::GetLazyKeepaliveCount(const Extension* extension) { |
| } |
| int ExtensionProcessManager::IncrementLazyKeepaliveCount( |
| - const Extension* extension, ShouldCancelSuspend should_cancel_suspend) { |
| + const Extension* extension) { |
| if (!extension->has_lazy_background_page()) |
| return 0; |
| int& count = background_page_data_[extension->id()].lazy_keepalive_count; |
| - bool& is_closing = background_page_data_[extension->id()].is_closing; |
| - if (++count == 1) { |
| - if (should_cancel_suspend == CANCEL_SUSPEND && is_closing) { |
| - is_closing = false; |
| - ExtensionHost* host = GetBackgroundHostForExtension(extension->id()); |
| - if (host) |
| - host->render_view_host()->Send( |
| - new ExtensionMsg_CancelUnload(extension->id())); |
| - } |
| + if (++count == 1) |
| OnLazyBackgroundPageActive(extension->id()); |
| - } |
| return count; |
| } |
| @@ -463,7 +454,7 @@ void ExtensionProcessManager::IncrementLazyKeepaliveCountForView( |
| const Extension* extension = GetExtensionForRenderViewHost( |
| render_view_host); |
| if (extension) |
| - IncrementLazyKeepaliveCount(extension, DONT_CANCEL_SUSPEND); |
| + IncrementLazyKeepaliveCount(extension); |
| } |
| } |
| @@ -528,7 +519,7 @@ void ExtensionProcessManager::OnNetworkRequestStarted( |
| ExtensionHost* host = GetBackgroundHostForExtension( |
| GetExtensionID(render_view_host)); |
| if (host && host->render_view_host() == render_view_host) |
| - IncrementLazyKeepaliveCount(host->extension(), DONT_CANCEL_SUSPEND); |
| + IncrementLazyKeepaliveCount(host->extension()); |
| } |
| void ExtensionProcessManager::OnNetworkRequestDone( |
| @@ -539,6 +530,18 @@ void ExtensionProcessManager::OnNetworkRequestDone( |
| DecrementLazyKeepaliveCount(host->extension()); |
| } |
| +void ExtensionProcessManager::CancelSuspend(const Extension* extension) { |
| + bool& is_closing = background_page_data_[extension->id()].is_closing; |
| + ExtensionHost* host = GetBackgroundHostForExtension(extension->id()); |
| + if (host && is_closing) { |
| + is_closing = false; |
| + host->render_view_host()->Send( |
| + new ExtensionMsg_CancelUnload(extension->id())); |
| + } |
| + IncrementLazyKeepaliveCount(extension); |
| + DecrementLazyKeepaliveCount(extension); |
|
Matt Perry
2012/07/25 19:21:55
Could you add a comment why this is necessary?
(T
koz (OOO until 15th September)
2012/07/26 00:40:08
I've added a comment and will leave it this way, b
|
| +} |
| + |
| void ExtensionProcessManager::Observe( |
| int type, |
| const content::NotificationSource& source, |
| @@ -624,7 +627,7 @@ void ExtensionProcessManager::Observe( |
| const Extension* extension = GetExtensionForRenderViewHost( |
| render_view_host); |
| if (extension) |
| - IncrementLazyKeepaliveCount(extension, CANCEL_SUSPEND); |
| + IncrementLazyKeepaliveCount(extension); |
| } |
| break; |
| } |