Index: chrome/browser/extensions/extensions_service.cc |
=================================================================== |
--- chrome/browser/extensions/extensions_service.cc (revision 14851) |
+++ chrome/browser/extensions/extensions_service.cc (working copy) |
@@ -18,8 +18,9 @@ |
#include "chrome/browser/extensions/extension.h" |
#include "chrome/browser/extensions/extension_browser_event_router.h" |
#include "chrome/browser/extensions/extension_error_reporter.h" |
+#include "chrome/browser/extensions/extension_host.h" |
+#include "chrome/browser/extensions/extension_view.h" |
#include "chrome/browser/extensions/user_script_master.h" |
-#include "chrome/browser/extensions/extension_view.h" |
#include "chrome/browser/plugin_service.h" |
#include "chrome/browser/profile.h" |
#include "chrome/browser/tab_contents/site_instance.h" |
@@ -27,6 +28,8 @@ |
#include "chrome/common/notification_service.h" |
#include "chrome/common/unzip.h" |
+#include "chrome/browser/browser_list.h" |
+ |
#if defined(OS_WIN) |
#include "base/registry.h" |
#endif |
@@ -82,6 +85,11 @@ |
} |
ExtensionsService::~ExtensionsService() { |
+ for (ExtensionHostList::iterator iter = background_hosts_.begin(); |
+ iter != background_hosts_.end(); ++iter) { |
+ delete *iter; |
+ } |
+ |
for (ExtensionList::iterator iter = extensions_.begin(); |
iter != extensions_.end(); ++iter) { |
delete *iter; |
@@ -163,6 +171,11 @@ |
script != scripts.end(); ++script) { |
user_script_master_->AddLoneScript(*script); |
} |
+ |
+ // Start the process for the master page, if it exists. |
+ if ((*extension)->background_url().is_valid()) { |
+ CreateBackgroundHost(*extension, (*extension)->background_url()); |
+ } |
} |
// Since user scripts may have changed, tell UserScriptMaster to kick off |
@@ -189,9 +202,18 @@ |
ExtensionView* ExtensionsService::CreateView(Extension* extension, |
const GURL& url, |
Browser* browser) { |
- return new ExtensionView(extension, url, GetSiteInstanceForURL(url), browser); |
+ return new ExtensionView( |
+ new ExtensionHost(extension, GetSiteInstanceForURL(url)), browser, url); |
} |
+void ExtensionsService::CreateBackgroundHost(Extension* extension, |
+ const GURL& url) { |
+ ExtensionHost* host = |
+ new ExtensionHost(extension, GetSiteInstanceForURL(url)); |
+ host->CreateRenderView(url, NULL); // create a RenderViewHost with no view |
+ background_hosts_.push_back(host); |
+} |
+ |
SiteInstance* ExtensionsService::GetSiteInstanceForURL(const GURL& url) { |
return browsing_instance_->GetSiteInstanceForURL(url); |
} |