summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-02 18:31:22 +0000
committerjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-02 18:31:22 +0000
commitc5eda78e16c12a40f78a9660cd6d743c16520aca (patch)
treecb60e273c9f2ee1cf5e381a142ed02f015a54167
parent46530d9e8bb9c5d96fc31c979678fe3b63320824 (diff)
downloadchromium_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.cc70
-rw-r--r--chrome/browser/ui/views/extensions/extension_dialog.h15
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_;