Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: extensions/browser/process_manager.h

Issue 381283002: Refactor code that defers extension background page loading (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup, fix android Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/process_manager.h
diff --git a/extensions/browser/process_manager.h b/extensions/browser/process_manager.h
index 664c9420fde504a05d071e6de9a9a232722b57fa..c4d8e910d0a005f4246f3163ef30e0c60096541e 100644
--- a/extensions/browser/process_manager.h
+++ b/extensions/browser/process_manager.h
@@ -35,6 +35,24 @@ class Extension;
class ExtensionHost;
class ProcessManagerObserver;
+// Customization of ProcessManager from the extension system embedder.
+class ProcessManagerDelegate {
Yoyo Zhou 2014/07/15 02:13:22 Probably it's best to put this in a separate heade
James Cook 2014/07/15 17:02:52 Done.
+ public:
+ virtual ~ProcessManagerDelegate() {}
+
+ // Returns true if the embedder allows background pages for the given
+ // |context|.
+ virtual bool IsBackgroundPageAllowed(
+ content::BrowserContext* context) const = 0;
+
+ // Returns true if the embedder wishes to defer starting up the renderers for
+ // extension background pages. If the embedder returns true it must call
+ // ProcessManager::MaybeCreateStartupBackgroundHosts() when it is ready. See
+ // ChromeProcessManagerDelegate for examples of how this is useful.
+ virtual bool DeferCreatingStartupBackgroundHosts(
+ content::BrowserContext* context) const = 0;
+};
+
// Manages dynamic state of running Chromium extensions. There is one instance
// of this class per Profile. OTR Profiles have a separate instance that keeps
// track of split-mode extensions only.
@@ -122,8 +140,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.
@@ -144,6 +163,10 @@ class ProcessManager : public content::NotificationObserver {
content::BrowserContext* original_context,
ProcessManager* original_manager);
+ 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.
@@ -160,7 +183,7 @@ class ProcessManager : public content::NotificationObserver {
// Load all background pages once the profile data is ready and the pages
// should be loaded.
- void CreateBackgroundHostsForProfileStartup();
+ void CreateStartupBackgroundHosts();
Yoyo Zhou 2014/07/15 02:13:22 nit: does this need to be protected? can it be in
James Cook 2014/07/15 17:02:52 Good catch! Moved to private.
content::NotificationRegistrar registrar_;
@@ -216,9 +239,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

Powered by Google App Engine
This is Rietveld 408576698