| Index: extensions/browser/process_manager.h
|
| diff --git a/extensions/browser/process_manager.h b/extensions/browser/process_manager.h
|
| index e580bbd9335205b8b22ec164c25930d9e9853802..e3c6bcf06aa550e2ca8d350312b1e0732ec01d0b 100644
|
| --- a/extensions/browser/process_manager.h
|
| +++ b/extensions/browser/process_manager.h
|
| @@ -33,6 +33,8 @@ namespace extensions {
|
|
|
| class Extension;
|
| class ExtensionHost;
|
| +class ExtensionRegistry;
|
| +class ProcessManagerDelegate;
|
| class ProcessManagerObserver;
|
|
|
| // Manages dynamic state of running Chromium extensions. There is one instance
|
| @@ -122,8 +124,9 @@ class ProcessManager : public content::NotificationObserver {
|
| // onSuspendCanceled() event to it.
|
| void CancelSuspend(const Extension* extension);
|
|
|
| - // Ensures background hosts are loaded for a new browser window.
|
| - void OnBrowserWindowReady();
|
| + // Creates background hosts if the embedder is ready and they are not already
|
| + // loaded.
|
| + void MaybeCreateStartupBackgroundHosts();
|
|
|
| // Gets the BrowserContext associated with site_instance_ and all other
|
| // related SiteInstances.
|
| @@ -137,18 +140,30 @@ class ProcessManager : public content::NotificationObserver {
|
| void SetKeepaliveImpulseDecrementCallbackForTesting(
|
| const ImpulseCallbackForTesting& callback);
|
|
|
| - // Creates an incognito-context instance for tests. Tests for non-incognito
|
| - // contexts can just use Create() above.
|
| + // Creates a non-incognito instance for tests. |registry| allows unit tests
|
| + // to inject an ExtensionRegistry that is not managed by the usual
|
| + // BrowserContextKeyedServiceFactory system.
|
| + static ProcessManager* CreateForTesting(content::BrowserContext* context,
|
| + ExtensionRegistry* registry);
|
| +
|
| + // Creates an incognito-context instance for tests.
|
| static ProcessManager* CreateIncognitoForTesting(
|
| content::BrowserContext* incognito_context,
|
| content::BrowserContext* original_context,
|
| - ProcessManager* original_manager);
|
| + ProcessManager* original_manager,
|
| + ExtensionRegistry* registry);
|
| +
|
| + bool startup_background_hosts_created_for_test() const {
|
| + return startup_background_hosts_created_;
|
| + }
|
|
|
| protected:
|
| // If |context| is incognito pass the master context as |original_context|.
|
| - // Otherwise pass the same context for both.
|
| + // Otherwise pass the same context for both. Pass the ExtensionRegistry for
|
| + // |context| as |registry|, or override it for testing.
|
| ProcessManager(content::BrowserContext* context,
|
| - content::BrowserContext* original_context);
|
| + content::BrowserContext* original_context,
|
| + ExtensionRegistry* registry);
|
|
|
| // Called on browser shutdown to close our extension hosts.
|
| void CloseBackgroundHosts();
|
| @@ -158,10 +173,6 @@ class ProcessManager : public content::NotificationObserver {
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) OVERRIDE;
|
|
|
| - // Load all background pages once the profile data is ready and the pages
|
| - // should be loaded.
|
| - void CreateBackgroundHostsForProfileStartup();
|
| -
|
| content::NotificationRegistrar registrar_;
|
|
|
| // The set of ExtensionHosts running viewless background extensions.
|
| @@ -172,6 +183,9 @@ class ProcessManager : public content::NotificationObserver {
|
| // browsing instance is created. This controls process grouping.
|
| scoped_refptr<content::SiteInstance> site_instance_;
|
|
|
| + // Not owned. Also used by IncognitoProcessManager.
|
| + ExtensionRegistry* extension_registry_;
|
| +
|
| private:
|
| friend class ProcessManagerTest;
|
|
|
| @@ -182,6 +196,10 @@ class ProcessManager : public content::NotificationObserver {
|
| typedef std::map<content::RenderViewHost*,
|
| extensions::ViewType> ExtensionRenderViews;
|
|
|
| + // Load all background pages once the profile data is ready and the pages
|
| + // should be loaded.
|
| + void CreateStartupBackgroundHosts();
|
| +
|
| // Called just after |host| is created so it can be registered in our lists.
|
| void OnBackgroundHostCreated(ExtensionHost* host);
|
|
|
| @@ -216,9 +234,6 @@ class ProcessManager : public content::NotificationObserver {
|
| // Clears background page data for this extension.
|
| void ClearBackgroundPageData(const std::string& extension_id);
|
|
|
| - // Returns true if loading background pages should be deferred.
|
| - bool DeferLoadingBackgroundHosts() const;
|
| -
|
| void OnDevToolsStateChanged(content::DevToolsAgentHost*, bool attached);
|
|
|
| // Contains all active extension-related RenderViewHost instances for all
|
|
|