Index: chrome/browser/ui/extensions/shell_window.h |
diff --git a/chrome/browser/ui/extensions/shell_window.h b/chrome/browser/ui/extensions/shell_window.h |
index 2790b74d1d823f51a22b29135e1fec4eacf0a4e2..bdf87cc70df1ca8b7598223fbb19c864b1ef5786 100644 |
--- a/chrome/browser/ui/extensions/shell_window.h |
+++ b/chrome/browser/ui/extensions/shell_window.h |
@@ -7,14 +7,16 @@ |
#pragma once |
#include "base/memory/scoped_ptr.h" |
+#include "chrome/browser/extensions/extension_function_dispatcher.h" |
#include "chrome/browser/sessions/session_id.h" |
-#include "chrome/browser/extensions/extension_host.h" |
#include "chrome/browser/ui/base_window.h" |
#include "content/public/browser/notification_observer.h" |
#include "content/public/browser/notification_registrar.h" |
+#include "content/public/browser/web_contents_delegate.h" |
+#include "content/public/browser/web_contents_observer.h" |
+class Browser; |
class Extension; |
-class ExtensionHost; |
class ExtensionWindowController; |
class GURL; |
class Profile; |
@@ -24,6 +26,9 @@ class WebContents; |
} |
class ShellWindow : public content::NotificationObserver, |
+ public content::WebContentsDelegate, |
+ public content::WebContentsObserver, |
+ public ExtensionFunctionDispatcher::Delegate, |
public BaseWindow { |
public: |
// TODO(mihaip): Switch from hardcoded defaults to passing in the window |
@@ -31,7 +36,7 @@ class ShellWindow : public content::NotificationObserver, |
static const int kDefaultWidth = 512; |
static const int kDefaultHeight = 384; |
- content::WebContents* web_contents() const { return host_->host_contents(); } |
+ content::WebContents* web_contents() const { return web_contents_.get(); } |
const SessionID& session_id() const { return session_id_; } |
const ExtensionWindowController* extension_window_controller() const { |
return extension_window_controller_.get(); |
@@ -41,24 +46,47 @@ class ShellWindow : public content::NotificationObserver, |
const Extension* extension, |
const GURL& url); |
+ // ExtensionFunctionDispatcher::Delegate |
Aaron Boodman
2012/04/27 16:20:31
None of these implemented interfaces need to be pu
benwells
2012/05/03 09:22:40
Done. I didn't even realize you could do this ...
|
+ virtual content::WebContents* GetAssociatedWebContents() const OVERRIDE; |
+ |
+ // content::WebContentsObserver |
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
+ |
+ // content::WebContentsDelegate |
+ virtual void CloseContents(content::WebContents* contents) OVERRIDE; |
+ virtual bool ShouldSuppressDialogs() OVERRIDE; |
+ |
// content::NotificationObserver implementation. |
virtual void Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) OVERRIDE; |
protected: |
- explicit ShellWindow(ExtensionHost* host_); |
+ ShellWindow(Profile* profile, |
+ const Extension* extension, |
+ const GURL& url); |
virtual ~ShellWindow(); |
// Instantiates a platform-specific ShellWindow subclass (one implementation |
// per platform). Public users of ShellWindow should use ShellWindow::Create. |
Aaron Boodman
2012/04/27 16:20:31
Name this CreateImpl()?
benwells
2012/05/03 09:22:40
Done.
|
- static ShellWindow* CreateShellWindow(ExtensionHost* host); |
+ static ShellWindow* CreateShellWindow(Profile* profile, |
Aaron Boodman
2012/04/27 16:20:31
Does all of this really need to be accessible to s
benwells
2012/05/03 09:22:40
Agreed. I moved other stuff in this class to be as
|
+ const Extension* extension, |
+ const GURL& url); |
+ |
+ // ExtensionFunctionDispatcher::Delegate |
+ virtual Browser* GetBrowser() OVERRIDE; |
+ |
+ // Message handlers. |
+ void OnRequest(const ExtensionHostMsg_Request_Params& params); |
+ Profile* profile_; // weak pointer - owned by ProfileManager. |
const SessionID session_id_; |
- scoped_ptr<ExtensionHost> host_; |
+ const Extension* extension_; // weak pointer - owned by ExtensionService. |
content::NotificationRegistrar registrar_; |
scoped_ptr<ExtensionWindowController> extension_window_controller_; |
+ scoped_ptr<content::WebContents> web_contents_; |
+ ExtensionFunctionDispatcher extension_function_dispatcher_; |
private: |
DISALLOW_COPY_AND_ASSIGN(ShellWindow); |
}; |