Chromium Code Reviews| Index: chrome/browser/renderer_host/chrome_render_message_filter.cc |
| diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc |
| index b31e75a650d70108503ef9e5937e3ecc1c21552d..be30e8011d83b0e62963408693c09326a0adfe51 100644 |
| --- a/chrome/browser/renderer_host/chrome_render_message_filter.cc |
| +++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc |
| @@ -17,6 +17,7 @@ |
| #include "chrome/browser/extensions/extension_info_map.h" |
| #include "chrome/browser/extensions/extension_message_service.h" |
| #include "chrome/browser/extensions/extension_process_manager.h" |
| +#include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| #include "chrome/browser/extensions/extension_system_factory.h" |
| #include "chrome/browser/metrics/histogram_synchronizer.h" |
| @@ -98,6 +99,12 @@ bool ChromeRenderMessageFilter::OnMessageReceived(const IPC::Message& message, |
| OnExtensionRequestForIOThread) |
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_ShouldUnloadAck, |
| OnExtensionShouldUnloadAck) |
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_IncrementLazyKeepaliveCount, |
| + OnExtensionIncrementLazyKeepaliveCount) |
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_DecrementLazyKeepaliveCount, |
| + OnExtensionDecrementLazyKeepaliveCount) |
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_GenerateUniqueID, |
| + OnExtensionGenerateUniqueID) |
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_UnloadAck, OnExtensionUnloadAck) |
| #if defined(USE_TCMALLOC) |
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_RendererTcmalloc, OnRendererTcmalloc) |
| @@ -149,6 +156,8 @@ void ChromeRenderMessageFilter::OverrideThreadForMessage( |
| case ExtensionHostMsg_CloseChannel::ID: |
| case ExtensionHostMsg_ShouldUnloadAck::ID: |
| case ExtensionHostMsg_UnloadAck::ID: |
| + case ExtensionHostMsg_IncrementLazyKeepaliveCount::ID: |
| + case ExtensionHostMsg_DecrementLazyKeepaliveCount::ID: |
| case ChromeViewHostMsg_UpdatedCacheStats::ID: |
| *thread = BrowserThread::UI; |
| break; |
| @@ -415,6 +424,35 @@ void ChromeRenderMessageFilter::OnExtensionUnloadAck( |
| profile_->GetExtensionProcessManager()->OnUnloadAck(extension_id); |
| } |
| +void ChromeRenderMessageFilter::OnExtensionIncrementLazyKeepaliveCount( |
| + const std::string& extension_id) { |
| + ExtensionService* service = |
| + ExtensionSystemFactory::GetForProfile(profile_)->extension_service(); |
| + if (profile_->GetExtensionProcessManager() && service) { |
|
Yoyo Zhou
2012/04/04 18:52:24
Use this instead: ExtensionProcessManager* process
Matt Perry
2012/04/04 19:21:44
Done.
|
| + const Extension* extension = service->extensions()->GetByID(extension_id); |
| + if (extension) |
| + profile_->GetExtensionProcessManager()->IncrementLazyKeepaliveCount( |
| + extension); |
| + } |
| +} |
| + |
| +void ChromeRenderMessageFilter::OnExtensionDecrementLazyKeepaliveCount( |
| + const std::string& extension_id) { |
| + ExtensionService* service = |
| + ExtensionSystemFactory::GetForProfile(profile_)->extension_service(); |
| + if (profile_->GetExtensionProcessManager() && service) { |
| + const Extension* extension = service->extensions()->GetByID(extension_id); |
| + if (extension) |
| + profile_->GetExtensionProcessManager()->DecrementLazyKeepaliveCount( |
| + extension); |
| + } |
| +} |
| + |
| +void ChromeRenderMessageFilter::OnExtensionGenerateUniqueID(int* unique_id) { |
| + static int next_unique_id = 1; |
| + *unique_id = next_unique_id++; |
| +} |
| + |
| #if defined(USE_TCMALLOC) |
| void ChromeRenderMessageFilter::OnRendererTcmalloc(const std::string& output) { |
| base::ProcessId pid = base::GetProcId(peer_handle()); |