diff options
author | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-02 18:31:22 +0000 |
---|---|---|
committer | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-02 18:31:22 +0000 |
commit | c5eda78e16c12a40f78a9660cd6d743c16520aca (patch) | |
tree | cb60e273c9f2ee1cf5e381a142ed02f015a54167 | |
parent | 46530d9e8bb9c5d96fc31c979678fe3b63320824 (diff) | |
download | chromium_src-c5eda78e16c12a40f78a9660cd6d743c16520aca.zip chromium_src-c5eda78e16c12a40f78a9660cd6d743c16520aca.tar.gz chromium_src-c5eda78e16c12a40f78a9660cd6d743c16520aca.tar.bz2 |
CrOS - Refactor ExtensionDialog initialization
Better divide up the responsibilities between Show() and the constructor, create some helper methods, and remove unnecessary ExtensionView::Container implementation.
BUG=chromium-os:19989
TEST=browser_tests, FileManagerDialogTest.*
Review URL: http://codereview.chromium.org/7792101
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99414 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/views/extensions/extension_dialog.cc | 70 | ||||
-rw-r--r-- | chrome/browser/ui/views/extensions/extension_dialog.h | 15 |
2 files changed, 40 insertions, 45 deletions
diff --git a/chrome/browser/ui/views/extensions/extension_dialog.cc b/chrome/browser/ui/views/extensions/extension_dialog.cc index d263eb2..919430e 100644 --- a/chrome/browser/ui/views/extensions/extension_dialog.cc +++ b/chrome/browser/ui/views/extensions/extension_dialog.cc @@ -19,32 +19,16 @@ #include "googleurl/src/gurl.h" #include "views/widget/widget.h" -ExtensionDialog::ExtensionDialog(Browser* browser, ExtensionHost* host, - int width, int height, +ExtensionDialog::ExtensionDialog(ExtensionHost* host, ExtensionDialogObserver* observer) - : extension_host_(host), + : window_(NULL), + extension_host_(host), observer_(observer) { AddRef(); // Balanced in DeleteDelegate(); - gfx::NativeWindow parent = browser->window()->GetNativeHandle(); - window_ = browser::CreateViewsWindow( - parent, this /* views::WidgetDelegate */); - - // Center the window over the browser. - gfx::Point center = browser->window()->GetBounds().CenterPoint(); - int x = center.x() - width / 2; - int y = center.y() - height / 2; - window_->SetBounds(gfx::Rect(x, y, width, height)); - - host->view()->SetContainer(this /* ExtensionView::Container */); // Listen for the containing view calling window.close(); registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE, Source<Profile>(host->profile())); - - window_->Show(); - window_->Activate(); - // Ensure the DOM JavaScript can respond immediately to keyboard shortcuts. - host->render_view_host()->view()->Focus(); } ExtensionDialog::~ExtensionDialog() { @@ -59,16 +43,42 @@ ExtensionDialog* ExtensionDialog::Show( int height, ExtensionDialogObserver* observer) { CHECK(browser); + ExtensionHost* host = CreateExtensionHost(url, browser); + if (!host) + return NULL; + host->set_associated_tab_contents(tab_contents); + + ExtensionDialog* dialog = new ExtensionDialog(host, observer); + dialog->InitWindow(browser, width, height); + // Ensure the DOM JavaScript can respond immediately to keyboard shortcuts. + host->render_view_host()->view()->Focus(); + return dialog; +} + +// static +ExtensionHost* ExtensionDialog::CreateExtensionHost(const GURL& url, + Browser* browser) { ExtensionProcessManager* manager = browser->profile()->GetExtensionProcessManager(); DCHECK(manager); if (!manager) return NULL; - ExtensionHost* host = manager->CreateDialogHost(url, browser); - if (!host) - return NULL; - host->set_associated_tab_contents(tab_contents); - return new ExtensionDialog(browser, host, width, height, observer); + return manager->CreateDialogHost(url, browser); +} + +void ExtensionDialog::InitWindow(Browser* browser, int width, int height) { + gfx::NativeWindow parent = browser->window()->GetNativeHandle(); + window_ = browser::CreateViewsWindow( + parent, this /* views::WidgetDelegate */); + + // Center the window over the browser. + gfx::Point center = browser->window()->GetBounds().CenterPoint(); + int x = center.x() - width / 2; + int y = center.y() - height / 2; + window_->SetBounds(gfx::Rect(x, y, width, height)); + + window_->Show(); + window_->Activate(); } void ExtensionDialog::ObserverDestroyed() { @@ -119,18 +129,6 @@ views::View* ExtensionDialog::GetContentsView() { } ///////////////////////////////////////////////////////////////////////////// -// ExtensionView::Container overrides. - -void ExtensionDialog::OnExtensionMouseMove(ExtensionView* view) { -} - -void ExtensionDialog::OnExtensionMouseLeave(ExtensionView* view) { -} - -void ExtensionDialog::OnExtensionPreferredSizeChanged(ExtensionView* view) { -} - -///////////////////////////////////////////////////////////////////////////// // NotificationObserver overrides. void ExtensionDialog::Observe(int type, diff --git a/chrome/browser/ui/views/extensions/extension_dialog.h b/chrome/browser/ui/views/extensions/extension_dialog.h index 654aad1..d00e204 100644 --- a/chrome/browser/ui/views/extensions/extension_dialog.h +++ b/chrome/browser/ui/views/extensions/extension_dialog.h @@ -7,7 +7,6 @@ #pragma once #include "base/memory/ref_counted.h" -#include "chrome/browser/ui/views/extensions/extension_view.h" #include "content/common/notification_observer.h" #include "content/common/notification_registrar.h" #include "views/widget/widget_delegate.h" @@ -28,7 +27,6 @@ class Widget; // Dialog is automatically centered in the browser window and has fixed size. // For example, used by the Chrome OS file browser. class ExtensionDialog : public views::WidgetDelegate, - public ExtensionView::Container, public NotificationObserver, public base::RefCounted<ExtensionDialog> { public: @@ -62,11 +60,6 @@ class ExtensionDialog : public views::WidgetDelegate, virtual const views::Widget* GetWidget() const OVERRIDE; virtual views::View* GetContentsView() OVERRIDE; - // ExtensionView::Container overrides. - virtual void OnExtensionMouseMove(ExtensionView* view); - virtual void OnExtensionMouseLeave(ExtensionView* view); - virtual void OnExtensionPreferredSizeChanged(ExtensionView* view); - // NotificationObserver overrides. virtual void Observe(int type, const NotificationSource& source, @@ -74,8 +67,12 @@ class ExtensionDialog : public views::WidgetDelegate, private: // Use Show() to create instances. - ExtensionDialog(Browser* browser, ExtensionHost* host, int width, int height, - ExtensionDialogObserver* observer); + ExtensionDialog(ExtensionHost* host, ExtensionDialogObserver* observer); + + static ExtensionHost* CreateExtensionHost(const GURL& url, + Browser* browser); + + void InitWindow(Browser* browser, int width, int height); // Window that holds the extension host view. views::Widget* window_; |