| 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 30fcb4d3dcffbdcce9788182e75f4b5cc7055858..57f6f62b01a9dbc2393fb524073f634a6898d1c3 100644
 | 
| --- a/chrome/browser/extensions/extension_process_manager.cc
 | 
| +++ b/chrome/browser/extensions/extension_process_manager.cc
 | 
| @@ -10,6 +10,7 @@
 | 
|  #include "chrome/browser/extensions/extension_host.h"
 | 
|  #include "chrome/browser/extensions/extension_info_map.h"
 | 
|  #include "chrome/browser/extensions/extension_service.h"
 | 
| +#include "chrome/browser/extensions/extension_system.h"
 | 
|  #include "chrome/browser/profiles/profile.h"
 | 
|  #include "chrome/browser/ui/browser.h"
 | 
|  #include "chrome/browser/ui/browser_window.h"
 | 
| @@ -316,6 +317,14 @@ std::set<RenderViewHost*>
 | 
|    return result;
 | 
|  }
 | 
|  
 | 
| +const Extension* ExtensionProcessManager::GetExtensionForRenderViewHost(
 | 
| +    content::RenderViewHost* render_view_host) {
 | 
| +  ExtensionService* service =
 | 
| +      ExtensionSystem::Get(GetProfile())->extension_service();
 | 
| +  return service->extensions()->GetByID(
 | 
| +      render_view_host->GetSiteInstance()->GetSite().host());
 | 
| +}
 | 
| +
 | 
|  void ExtensionProcessManager::RegisterRenderViewHost(
 | 
|      RenderViewHost* render_view_host,
 | 
|      const Extension* extension) {
 | 
| @@ -369,10 +378,6 @@ SiteInstance* ExtensionProcessManager::GetSiteInstanceForURL(const GURL& url) {
 | 
|    return site_instance_->GetRelatedSiteInstance(url);
 | 
|  }
 | 
|  
 | 
| -bool ExtensionProcessManager::HasExtensionHost(ExtensionHost* host) const {
 | 
| -  return all_hosts_.find(host) != all_hosts_.end();
 | 
| -}
 | 
| -
 | 
|  int ExtensionProcessManager::GetLazyKeepaliveCount(const Extension* extension) {
 | 
|    if (!extension->has_lazy_background_page())
 | 
|      return 0;
 | 
| @@ -510,7 +515,6 @@ void ExtensionProcessManager::Observe(
 | 
|  
 | 
|      case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED: {
 | 
|        ExtensionHost* host = content::Details<ExtensionHost>(details).ptr();
 | 
| -      all_hosts_.erase(host);
 | 
|        if (background_hosts_.erase(host))
 | 
|          background_page_data_.erase(host->extension()->id());
 | 
|        break;
 | 
| @@ -583,8 +587,6 @@ Profile* ExtensionProcessManager::GetProfile() const {
 | 
|  void ExtensionProcessManager::OnExtensionHostCreated(ExtensionHost* host,
 | 
|                                                       bool is_background) {
 | 
|    DCHECK_EQ(site_instance_->GetBrowserContext(), host->profile());
 | 
| -
 | 
| -  all_hosts_.insert(host);
 | 
|    if (is_background)
 | 
|      background_hosts_.insert(host);
 | 
|  }
 | 
| @@ -620,6 +622,16 @@ IncognitoExtensionProcessManager::IncognitoExtensionProcessManager(
 | 
|                   content::NotificationService::AllSources());
 | 
|  }
 | 
|  
 | 
| +const ExtensionProcessManager::ViewSet
 | 
| +ExtensionProcessManager::GetAllViews() const {
 | 
| +  ViewSet result;
 | 
| +  for (ExtensionRenderViews::const_iterator iter = all_extension_views_.begin();
 | 
| +       iter != all_extension_views_.end(); ++iter) {
 | 
| +    result.insert(iter->first);
 | 
| +  }
 | 
| +  return result;
 | 
| +}
 | 
| +
 | 
|  ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost(
 | 
|      const Extension* extension,
 | 
|      const GURL& url,
 | 
| 
 |