Index: chrome/browser/extensions/extension_host.h |
diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h |
index 3b3d64ef7503661a375189e26e49f9a76729e7a4..617cd8e71937dbd6a05cf265d88dc43602d73484 100644 |
--- a/chrome/browser/extensions/extension_host.h |
+++ b/chrome/browser/extensions/extension_host.h |
@@ -38,6 +38,8 @@ class ExtensionHost : public RenderViewHostDelegate, |
public ExtensionFunctionDispatcher::Delegate, |
public NotificationObserver { |
public: |
+ class ProcessCreationQueue; |
+ |
// Enable DOM automation in created render view hosts. |
static void EnableDOMAutomation() { enable_dom_automation_ = true; } |
@@ -75,10 +77,10 @@ class ExtensionHost : public RenderViewHostDelegate, |
// Returns true if the render view is initialized and didn't crash. |
bool IsRenderViewLive() const; |
- // Initializes our RenderViewHost by creating its RenderView and navigating |
- // to this host's url. Uses host_view for the RenderViewHost's view (can be |
- // NULL). |
- void CreateRenderView(RenderWidgetHostView* host_view); |
+ // Prepares to initializes our RenderViewHost by creating its RenderView and |
+ // navigating to this host's url. Uses host_view for the RenderViewHost's view |
+ // (can be NULL). This happens delayed to avoid locking the UI. |
+ void CreateRenderViewSoon(RenderWidgetHostView* host_view); |
// Sets |url_| and navigates |render_view_host_|. |
void NavigateToURL(const GURL& url); |
@@ -138,10 +140,15 @@ class ExtensionHost : public RenderViewHostDelegate, |
const NotificationDetails& details); |
private: |
+ friend class ProcessCreationQueue; |
+ |
// Whether to allow DOM automation for created RenderViewHosts. This is used |
// for testing. |
static bool enable_dom_automation_; |
+ // Actually create the RenderView for this host. See CreateRenderViewSoon. |
+ void CreateRenderViewNow(); |
+ |
// ExtensionFunctionDispatcher::Delegate |
// If this ExtensionHost has a view, this returns the Browser that view is a |
// part of. If this is a global background page, we use the active Browser |