summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/choose_mobile_network_dialog.cc1
-rw-r--r--chrome/browser/chromeos/login/login_web_dialog.cc2
-rw-r--r--chrome/browser/chromeos/sim_dialog_delegate.cc1
-rw-r--r--chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc11
-rw-r--r--chrome/browser/printing/cloud_print/cloud_print_setup_flow.h8
-rw-r--r--chrome/browser/printing/print_dialog_cloud.cc1
-rw-r--r--chrome/browser/ui/browser.cc2
-rw-r--r--chrome/browser/ui/browser_dialogs.h1
-rw-r--r--chrome/browser/ui/cocoa/web_dialog_window_controller.mm3
-rw-r--r--chrome/browser/ui/gtk/web_dialog_gtk.cc9
-rw-r--r--chrome/browser/ui/gtk/web_dialog_gtk.h4
-rw-r--r--chrome/browser/ui/views/keyboard_overlay_dialog_view.cc2
-rw-r--r--chrome/browser/ui/views/web_dialog_view.cc8
-rw-r--r--chrome/browser/ui/views/web_dialog_view.h8
-rw-r--r--chrome/browser/ui/views/web_dialog_view_browsertest.cc7
-rw-r--r--chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc1
-rw-r--r--chrome/browser/ui/webui/task_manager/task_manager_dialog.cc1
-rw-r--r--chrome/browser/ui/webui/web_dialog_controller_browsertest.cc11
18 files changed, 42 insertions, 39 deletions
diff --git a/chrome/browser/chromeos/choose_mobile_network_dialog.cc b/chrome/browser/chromeos/choose_mobile_network_dialog.cc
index beb7a3a0..e33753d 100644
--- a/chrome/browser/chromeos/choose_mobile_network_dialog.cc
+++ b/chrome/browser/chromeos/choose_mobile_network_dialog.cc
@@ -28,6 +28,7 @@ namespace chromeos {
void ChooseMobileNetworkDialog::ShowDialog(gfx::NativeWindow owning_window) {
views::Widget::CreateWindowWithParent(
new WebDialogView(ProfileManager::GetDefaultProfileOrOffTheRecord(),
+ NULL,
new ChooseMobileNetworkDialog),
owning_window)->Show();
}
diff --git a/chrome/browser/chromeos/login/login_web_dialog.cc b/chrome/browser/chromeos/login/login_web_dialog.cc
index bfec9e1..be8514a 100644
--- a/chrome/browser/chromeos/login/login_web_dialog.cc
+++ b/chrome/browser/chromeos/login/login_web_dialog.cc
@@ -57,7 +57,7 @@ LoginWebDialog::~LoginWebDialog() {
void LoginWebDialog::Show() {
views::Widget::CreateWindowWithParent(
- new WebDialogView(ProfileManager::GetDefaultProfile(), this),
+ new WebDialogView(ProfileManager::GetDefaultProfile(), NULL, this),
parent_window_)->Show();
is_open_ = true;
}
diff --git a/chrome/browser/chromeos/sim_dialog_delegate.cc b/chrome/browser/chromeos/sim_dialog_delegate.cc
index e13d891..a492e2d 100644
--- a/chrome/browser/chromeos/sim_dialog_delegate.cc
+++ b/chrome/browser/chromeos/sim_dialog_delegate.cc
@@ -47,6 +47,7 @@ void SimDialogDelegate::ShowDialog(gfx::NativeWindow owning_window,
SimDialogMode mode) {
views::Widget::CreateWindowWithParent(
new WebDialogView(ProfileManager::GetDefaultProfileOrOffTheRecord(),
+ NULL,
new SimDialogDelegate(mode)),
owning_window)->Show();
}
diff --git a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc
index 8e36e31..8d7f81f 100644
--- a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc
+++ b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc
@@ -22,7 +22,6 @@
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
-#include "chrome/browser/ui/webui/web_dialog_controller.h"
#include "chrome/common/net/gaia/gaia_auth_fetcher.h"
#include "chrome/common/net/gaia/gaia_constants.h"
#include "chrome/common/net/gaia/google_service_auth_error.h"
@@ -80,22 +79,20 @@ CloudPrintSetupFlow* CloudPrintSetupFlow::OpenDialog(
base::JSONWriter::Write(&args, &json_args);
CloudPrintSetupFlow* flow = new CloudPrintSetupFlow(json_args, profile,
- browser, delegate,
- setup_done);
+ delegate, setup_done);
// We may not always have a browser. This can happen when we are being
// invoked in the context of a "token expired" notfication. If we don't have
// a brower, use the underlying dialog system to show the dialog without
// using a browser.
if (!parent_window && browser && browser->window())
parent_window = browser->window()->GetNativeHandle();
- browser::ShowWebDialog(parent_window, profile, flow);
+ browser::ShowWebDialog(parent_window, profile, browser, flow);
return flow;
}
CloudPrintSetupFlow::CloudPrintSetupFlow(
const std::string& args,
Profile* profile,
- Browser* browser,
const base::WeakPtr<Delegate>& delegate,
bool setup_done)
: web_ui_(NULL),
@@ -106,10 +103,6 @@ CloudPrintSetupFlow::CloudPrintSetupFlow(
delegate_(delegate) {
// TODO(hclam): The data source should be added once.
profile_ = profile;
- if (browser) {
- web_dialog_controller_.reset(
- new WebDialogController(this, profile, browser));
- }
ChromeURLDataManager::AddDataSource(profile,
new CloudPrintSetupSource());
}
diff --git a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.h b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.h
index 698a444..a1bf990 100644
--- a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.h
+++ b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.h
@@ -18,7 +18,6 @@
#include "ui/gfx/native_widget_types.h"
#include "ui/web_dialogs/web_dialog_delegate.h"
-class Browser;
class CloudPrintServiceProcessHelper;
class CloudPrintSetupMessageHandler;
class GaiaAuthFetcher;
@@ -34,8 +33,6 @@ namespace content {
class WebUI;
}
-class WebDialogController;
-
// This class is responsible for showing a cloud print setup dialog
// and perform operations to fill the content of the dialog and handle
// user actions in the dialog.
@@ -101,9 +98,7 @@ class CloudPrintSetupFlow : public ui::WebDialogDelegate,
friend class CloudPrintSetupMessageHandler;
// Use static Run method to get an instance.
- CloudPrintSetupFlow(const std::string& args,
- Profile* profile,
- Browser* browser,
+ CloudPrintSetupFlow(const std::string& args, Profile* profile,
const base::WeakPtr<Delegate>& delegate, bool setup_done);
// Called CloudPrintSetupMessageHandler when a DOM is attached. This method
@@ -154,7 +149,6 @@ class CloudPrintSetupFlow : public ui::WebDialogDelegate,
// Handle to the ServiceProcessControl which talks to the service process.
ServiceProcessControl* process_control_;
base::WeakPtr<Delegate> delegate_;
- scoped_ptr<WebDialogController> web_dialog_controller_;
DISALLOW_COPY_AND_ASSIGN(CloudPrintSetupFlow);
};
diff --git a/chrome/browser/printing/print_dialog_cloud.cc b/chrome/browser/printing/print_dialog_cloud.cc
index 7d38636..1e37cdc 100644
--- a/chrome/browser/printing/print_dialog_cloud.cc
+++ b/chrome/browser/printing/print_dialog_cloud.cc
@@ -684,6 +684,7 @@ void CreateDialogImpl(content::BrowserContext* browser_context,
callback);
browser::ShowWebDialog(modal_parent,
Profile::FromBrowserContext(browser_context),
+ NULL,
dialog_delegate);
}
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 4d59fc1..8ecbaad 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -1195,7 +1195,7 @@ gfx::NativeWindow Browser::BrowserShowWebDialog(
if (!parent_window)
parent_window = window_->GetNativeHandle();
- return browser::ShowWebDialog(parent_window, profile_, delegate);
+ return browser::ShowWebDialog(parent_window, profile_, this, delegate);
}
void Browser::BrowserRenderWidgetShowing() {
diff --git a/chrome/browser/ui/browser_dialogs.h b/chrome/browser/ui/browser_dialogs.h
index aeb97ca..dab83af 100644
--- a/chrome/browser/ui/browser_dialogs.h
+++ b/chrome/browser/ui/browser_dialogs.h
@@ -49,6 +49,7 @@ void ShowAboutIPCDialog();
// to do so, i.e. before OnDialogClosed() is called on the delegate.
gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
Profile* profile,
+ Browser* browser,
ui::WebDialogDelegate* delegate);
// Shows the collected cookies dialog box.
diff --git a/chrome/browser/ui/cocoa/web_dialog_window_controller.mm b/chrome/browser/ui/cocoa/web_dialog_window_controller.mm
index 322cd7a..44d7f91 100644
--- a/chrome/browser/ui/cocoa/web_dialog_window_controller.mm
+++ b/chrome/browser/ui/cocoa/web_dialog_window_controller.mm
@@ -10,7 +10,6 @@
#include "base/sys_string_conversions.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_finder.h"
#import "chrome/browser/ui/browser_dialogs.h"
#import "chrome/browser/ui/cocoa/browser_command_executor.h"
#import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
@@ -102,8 +101,8 @@ namespace browser {
gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
Profile* profile,
+ Browser* browser,
WebDialogDelegate* delegate) {
- Browser* browser = browser::FindLastActiveWithProfile(profile);
return [WebDialogWindowController showWebDialog:delegate
profile:profile
browser:browser];
diff --git a/chrome/browser/ui/gtk/web_dialog_gtk.cc b/chrome/browser/ui/gtk/web_dialog_gtk.cc
index 568ddf7..91a2732 100644
--- a/chrome/browser/ui/gtk/web_dialog_gtk.cc
+++ b/chrome/browser/ui/gtk/web_dialog_gtk.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/ui/gtk/gtk_util.h"
#include "chrome/browser/ui/gtk/tab_contents_container_gtk.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "chrome/browser/ui/webui/web_dialog_controller.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/web_contents.h"
#include "ui/web_dialogs/web_dialog_ui.h"
@@ -29,8 +30,10 @@ namespace browser {
gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
Profile* profile,
+ Browser* browser,
WebDialogDelegate* delegate) {
- WebDialogGtk* web_dialog = new WebDialogGtk(profile, delegate, parent);
+ WebDialogGtk* web_dialog =
+ new WebDialogGtk(profile, browser, delegate, parent);
return web_dialog->InitDialog();
}
@@ -60,12 +63,14 @@ void SetDialogStyle() {
// WebDialogGtk, public:
WebDialogGtk::WebDialogGtk(Profile* profile,
+ Browser* browser,
WebDialogDelegate* delegate,
gfx::NativeWindow parent_window)
: WebDialogWebContentsDelegate(profile),
delegate_(delegate),
parent_window_(parent_window),
- dialog_(NULL) {
+ dialog_(NULL),
+ dialog_controller_(new WebDialogController(this, profile, browser)) {
}
WebDialogGtk::~WebDialogGtk() {
diff --git a/chrome/browser/ui/gtk/web_dialog_gtk.h b/chrome/browser/ui/gtk/web_dialog_gtk.h
index 104b4a3..3546a16 100644
--- a/chrome/browser/ui/gtk/web_dialog_gtk.h
+++ b/chrome/browser/ui/gtk/web_dialog_gtk.h
@@ -19,14 +19,17 @@
typedef struct _GtkWidget GtkWidget;
+class Browser;
class Profile;
class TabContentsContainerGtk;
class TabContentsWrapper;
+class WebDialogController;
class WebDialogGtk : public WebDialogWebContentsDelegate,
public ui::WebDialogDelegate {
public:
WebDialogGtk(Profile* profile,
+ Browser* browser,
ui::WebDialogDelegate* delegate,
gfx::NativeWindow parent_window);
virtual ~WebDialogGtk();
@@ -75,6 +78,7 @@ class WebDialogGtk : public WebDialogWebContentsDelegate,
GtkWidget* dialog_;
+ scoped_ptr<WebDialogController> dialog_controller_;
scoped_ptr<TabContentsWrapper> tab_;
scoped_ptr<TabContentsContainerGtk> tab_contents_container_;
diff --git a/chrome/browser/ui/views/keyboard_overlay_dialog_view.cc b/chrome/browser/ui/views/keyboard_overlay_dialog_view.cc
index a533dcd..db2149c 100644
--- a/chrome/browser/ui/views/keyboard_overlay_dialog_view.cc
+++ b/chrome/browser/ui/views/keyboard_overlay_dialog_view.cc
@@ -25,7 +25,7 @@ KeyboardOverlayDialogView* g_instance = NULL;
KeyboardOverlayDialogView::KeyboardOverlayDialogView(
Profile* profile,
WebDialogDelegate* delegate)
- : WebDialogView(profile, delegate) {
+ : WebDialogView(profile, NULL, delegate) {
}
KeyboardOverlayDialogView::~KeyboardOverlayDialogView() {
diff --git a/chrome/browser/ui/views/web_dialog_view.cc b/chrome/browser/ui/views/web_dialog_view.cc
index c141077..6158aeb 100644
--- a/chrome/browser/ui/views/web_dialog_view.cc
+++ b/chrome/browser/ui/views/web_dialog_view.cc
@@ -10,6 +10,7 @@
#include "base/utf_string_conversions.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_dialogs.h"
+#include "chrome/browser/ui/webui/web_dialog_controller.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
@@ -21,8 +22,6 @@
#include "ui/views/layout/fill_layout.h"
#include "ui/views/widget/root_view.h"
#include "ui/views/widget/widget.h"
-#include "ui/web_dialogs/web_dialog_delegate.h"
-#include "ui/web_dialogs/web_dialog_ui.h"
#if defined(USE_AURA)
#include "ui/aura/event.h"
@@ -40,9 +39,10 @@ namespace browser {
// Declared in browser_dialogs.h so that others don't need to depend on our .h.
gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
Profile* profile,
+ Browser* browser,
WebDialogDelegate* delegate) {
views::Widget* widget = views::Widget::CreateWindowWithParent(
- new WebDialogView(profile, delegate), parent);
+ new WebDialogView(profile, browser, delegate), parent);
widget->Show();
return widget->GetNativeWindow();
}
@@ -53,11 +53,13 @@ gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent,
// WebDialogView, public:
WebDialogView::WebDialogView(Profile* profile,
+ Browser* browser,
WebDialogDelegate* delegate)
: ClientView(NULL, NULL),
WebDialogWebContentsDelegate(profile),
initialized_(false),
delegate_(delegate),
+ dialog_controller_(new WebDialogController(this, profile, browser)),
web_view_(new views::WebView(profile)) {
web_view_->set_allow_accelerators(true);
AddChildView(web_view_);
diff --git a/chrome/browser/ui/views/web_dialog_view.h b/chrome/browser/ui/views/web_dialog_view.h
index e6a718c4..915d2dc 100644
--- a/chrome/browser/ui/views/web_dialog_view.h
+++ b/chrome/browser/ui/views/web_dialog_view.h
@@ -18,6 +18,8 @@
#include "ui/views/window/client_view.h"
#include "ui/web_dialogs/web_dialog_delegate.h"
+class Browser;
+class WebDialogController;
class Profile;
namespace views {
@@ -37,7 +39,7 @@ class WebView;
// TODO(akalin): Make WebDialogView contain an WebDialogWebContentsDelegate
// instead of inheriting from it to avoid violating the "no multiple
// inheritance" rule.
-// TODO(beng): This class should not depend on Profile, only
+// TODO(beng): This class should not depend on Browser or Profile, only
// content::BrowserContext.
class WebDialogView
: public views::ClientView,
@@ -47,6 +49,7 @@ class WebDialogView
public TabRenderWatcher::Delegate {
public:
WebDialogView(Profile* profile,
+ Browser* browser,
ui::WebDialogDelegate* delegate);
virtual ~WebDialogView();
@@ -136,6 +139,9 @@ class WebDialogView
// using this variable.
ui::WebDialogDelegate* delegate_;
+ // Controls lifetime of dialog.
+ scoped_ptr<WebDialogController> dialog_controller_;
+
views::WebView* web_view_;
DISALLOW_COPY_AND_ASSIGN(WebDialogView);
diff --git a/chrome/browser/ui/views/web_dialog_view_browsertest.cc b/chrome/browser/ui/views/web_dialog_view_browsertest.cc
index cf4196d..778d8b6 100644
--- a/chrome/browser/ui/views/web_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/web_dialog_view_browsertest.cc
@@ -34,8 +34,9 @@ const int kInitialHeight = 40;
class TestWebDialogView : public WebDialogView {
public:
TestWebDialogView(Profile* profile,
+ Browser* browser,
WebDialogDelegate* delegate)
- : WebDialogView(profile, delegate),
+ : WebDialogView(profile, browser, delegate),
painted_(false),
should_quit_on_size_change_(false) {
delegate->GetDialogSize(&last_size_);
@@ -110,7 +111,7 @@ IN_PROC_BROWSER_TEST_F(WebDialogBrowserTest, MAYBE_SizeWindow) {
delegate->set_size(kInitialWidth, kInitialHeight);
TestWebDialogView* view =
- new TestWebDialogView(browser()->profile(), delegate);
+ new TestWebDialogView(browser()->profile(), browser(), delegate);
WebContents* web_contents = browser()->GetSelectedWebContents();
ASSERT_TRUE(web_contents != NULL);
views::Widget::CreateWindowWithParent(
@@ -190,7 +191,7 @@ IN_PROC_BROWSER_TEST_F(WebDialogBrowserTest, DISABLED_WebContentRendered) {
GURL(chrome::kChromeUIChromeURLsURL));
TestWebDialogView* view =
- new TestWebDialogView(browser()->profile(), delegate);
+ new TestWebDialogView(browser()->profile(), browser(), delegate);
WebContents* web_contents = browser()->GetSelectedWebContents();
ASSERT_TRUE(web_contents != NULL);
views::Widget::CreateWindowWithParent(
diff --git a/chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc b/chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc
index 0109280..4217979 100644
--- a/chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc
+++ b/chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc
@@ -80,6 +80,7 @@ void MobileSetupDialogDelegate::ShowDialog() {
dialog_window_ = browser::ShowWebDialog(
NULL,
ProfileManager::GetDefaultProfileOrOffTheRecord(),
+ NULL,
this);
}
diff --git a/chrome/browser/ui/webui/task_manager/task_manager_dialog.cc b/chrome/browser/ui/webui/task_manager/task_manager_dialog.cc
index f2914b4..f017d82 100644
--- a/chrome/browser/ui/webui/task_manager/task_manager_dialog.cc
+++ b/chrome/browser/ui/webui/task_manager/task_manager_dialog.cc
@@ -196,6 +196,7 @@ void TaskManagerDialogImpl::OnCloseDialog() {
void TaskManagerDialogImpl::OpenWebDialog() {
window_ = browser::ShowWebDialog(NULL,
ProfileManager::GetDefaultProfile(),
+ NULL,
this);
}
diff --git a/chrome/browser/ui/webui/web_dialog_controller_browsertest.cc b/chrome/browser/ui/webui/web_dialog_controller_browsertest.cc
index 7d34bf4..a5b32b0 100644
--- a/chrome/browser/ui/webui/web_dialog_controller_browsertest.cc
+++ b/chrome/browser/ui/webui/web_dialog_controller_browsertest.cc
@@ -5,7 +5,6 @@
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/webui/test_web_dialog_delegate.h"
-#include "chrome/browser/ui/webui/web_dialog_controller.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
@@ -16,14 +15,10 @@ namespace {
class TestDialogClosedDelegate : public test::TestWebDialogDelegate {
public:
- explicit TestDialogClosedDelegate(Browser* browser)
+ TestDialogClosedDelegate()
: test::TestWebDialogDelegate(
GURL(chrome::kChromeUIChromeURLsURL)),
dialog_closed_(false) {
- if (browser) {
- web_dialog_controller_.reset(
- new WebDialogController(this, browser->profile(), browser));
- }
}
bool dialog_closed() const { return dialog_closed_; }
@@ -37,7 +32,6 @@ class TestDialogClosedDelegate : public test::TestWebDialogDelegate {
}
private:
- scoped_ptr<WebDialogController> web_dialog_controller_;
bool dialog_closed_;
DISALLOW_COPY_AND_ASSIGN(TestDialogClosedDelegate);
@@ -54,8 +48,7 @@ class WebDialogControllerBrowserTest : public InProcessBrowserTest {
// that browser is closed the dialog created by that browser is closed.
IN_PROC_BROWSER_TEST_F(WebDialogControllerBrowserTest, IncognitoBrowser) {
Browser* browser = CreateIncognitoBrowser();
- scoped_ptr<TestDialogClosedDelegate> delegate(
- new TestDialogClosedDelegate(browser));
+ scoped_ptr<TestDialogClosedDelegate> delegate(new TestDialogClosedDelegate());
// Create the dialog and make sure the initial "closed" state is what we
// expect.