diff options
author | loislo@chromium.org <loislo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-05 09:08:21 +0000 |
---|---|---|
committer | loislo@chromium.org <loislo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-05 09:08:21 +0000 |
commit | 00b5a5f0969425e6a887d8844e833faa48eeb50b (patch) | |
tree | 3e03899ec45e3b7ba9c6780321481879da233c82 | |
parent | c36aadbe654334fc75c6ecbe5124ee9bb4f39a66 (diff) | |
download | chromium_src-00b5a5f0969425e6a887d8844e833faa48eeb50b.zip chromium_src-00b5a5f0969425e6a887d8844e833faa48eeb50b.tar.gz chromium_src-00b5a5f0969425e6a887d8844e833faa48eeb50b.tar.bz2 |
Revert "Remove the usage of Browser in WebDialogView."
This reverts commit aa9a424890c6a463af8b7c31e3cd8f0903e68d19.
BUG=none
TEST=none
TBR=mazda
Review URL: https://chromiumcodereview.appspot.com/10538003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140505 0039d316-1c4b-4281-b951-d872f2087c98
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. |