Chromium Code Reviews| 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); | 
| }; |