diff options
author | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-05 06:31:03 +0000 |
---|---|---|
committer | mazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-05 06:31:03 +0000 |
commit | aa9a424890c6a463af8b7c31e3cd8f0903e68d19 (patch) | |
tree | 044ac5dfc69228f591d45db8aabbdf859c183180 | |
parent | 2088082f542e79a81992d415e8386021048a8684 (diff) | |
download | chromium_src-aa9a424890c6a463af8b7c31e3cd8f0903e68d19.zip chromium_src-aa9a424890c6a463af8b7c31e3cd8f0903e68d19.tar.gz chromium_src-aa9a424890c6a463af8b7c31e3cd8f0903e68d19.tar.bz2 |
Remove the usage of Browser in WebDialogView.
browser argument of WebDialogView is used only from CloudPrintSetupFlow,
so I moved necessary code to CloudPrintSetupFlow and delete Browser usage in WebDialogView.
WebDialogController works only when browser is passed, so this can be removed.
BUG=124222
TEST=None
Review URL: https://chromiumcodereview.appspot.com/10499003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140493 0039d316-1c4b-4281-b951-d872f2087c98
18 files changed, 39 insertions, 42 deletions
diff --git a/chrome/browser/chromeos/choose_mobile_network_dialog.cc b/chrome/browser/chromeos/choose_mobile_network_dialog.cc index e33753d..beb7a3a0 100644 --- a/chrome/browser/chromeos/choose_mobile_network_dialog.cc +++ b/chrome/browser/chromeos/choose_mobile_network_dialog.cc @@ -28,7 +28,6 @@ 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 be8514a..bfec9e1 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(), NULL, this), + new WebDialogView(ProfileManager::GetDefaultProfile(), 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 a492e2d..e13d891 100644 --- a/chrome/browser/chromeos/sim_dialog_delegate.cc +++ b/chrome/browser/chromeos/sim_dialog_delegate.cc @@ -47,7 +47,6 @@ 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 8d7f81f..8e36e31 100644 --- a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc +++ b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc @@ -22,6 +22,7 @@ #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" @@ -79,20 +80,22 @@ CloudPrintSetupFlow* CloudPrintSetupFlow::OpenDialog( base::JSONWriter::Write(&args, &json_args); CloudPrintSetupFlow* flow = new CloudPrintSetupFlow(json_args, profile, - delegate, setup_done); + browser, 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, browser, flow); + browser::ShowWebDialog(parent_window, profile, flow); return flow; } CloudPrintSetupFlow::CloudPrintSetupFlow( const std::string& args, Profile* profile, + Browser* browser, const base::WeakPtr<Delegate>& delegate, bool setup_done) : web_ui_(NULL), @@ -103,6 +106,10 @@ 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 a1bf990..698a444 100644 --- a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.h +++ b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.h @@ -18,6 +18,7 @@ #include "ui/gfx/native_widget_types.h" #include "ui/web_dialogs/web_dialog_delegate.h" +class Browser; class CloudPrintServiceProcessHelper; class CloudPrintSetupMessageHandler; class GaiaAuthFetcher; @@ -33,6 +34,8 @@ 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. @@ -98,7 +101,9 @@ class CloudPrintSetupFlow : public ui::WebDialogDelegate, friend class CloudPrintSetupMessageHandler; // Use static Run method to get an instance. - CloudPrintSetupFlow(const std::string& args, Profile* profile, + CloudPrintSetupFlow(const std::string& args, + Profile* profile, + Browser* browser, const base::WeakPtr<Delegate>& delegate, bool setup_done); // Called CloudPrintSetupMessageHandler when a DOM is attached. This method @@ -149,6 +154,7 @@ 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 1e37cdc..7d38636 100644 --- a/chrome/browser/printing/print_dialog_cloud.cc +++ b/chrome/browser/printing/print_dialog_cloud.cc @@ -684,7 +684,6 @@ 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 8ecbaad..4d59fc1 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_, this, delegate); + return browser::ShowWebDialog(parent_window, profile_, delegate); } void Browser::BrowserRenderWidgetShowing() { diff --git a/chrome/browser/ui/browser_dialogs.h b/chrome/browser/ui/browser_dialogs.h index dab83af..aeb97ca 100644 --- a/chrome/browser/ui/browser_dialogs.h +++ b/chrome/browser/ui/browser_dialogs.h @@ -49,7 +49,6 @@ 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 44d7f91..322cd7a 100644 --- a/chrome/browser/ui/cocoa/web_dialog_window_controller.mm +++ b/chrome/browser/ui/cocoa/web_dialog_window_controller.mm @@ -10,6 +10,7 @@ #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" @@ -101,8 +102,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 91a2732..568ddf7 100644 --- a/chrome/browser/ui/gtk/web_dialog_gtk.cc +++ b/chrome/browser/ui/gtk/web_dialog_gtk.cc @@ -15,7 +15,6 @@ #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" @@ -30,10 +29,8 @@ namespace browser { gfx::NativeWindow ShowWebDialog(gfx::NativeWindow parent, Profile* profile, - Browser* browser, WebDialogDelegate* delegate) { - WebDialogGtk* web_dialog = - new WebDialogGtk(profile, browser, delegate, parent); + WebDialogGtk* web_dialog = new WebDialogGtk(profile, delegate, parent); return web_dialog->InitDialog(); } @@ -63,14 +60,12 @@ 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_controller_(new WebDialogController(this, profile, browser)) { + dialog_(NULL) { } WebDialogGtk::~WebDialogGtk() { diff --git a/chrome/browser/ui/gtk/web_dialog_gtk.h b/chrome/browser/ui/gtk/web_dialog_gtk.h index 3546a16..104b4a3 100644 --- a/chrome/browser/ui/gtk/web_dialog_gtk.h +++ b/chrome/browser/ui/gtk/web_dialog_gtk.h @@ -19,17 +19,14 @@ 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(); @@ -78,7 +75,6 @@ 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 db2149c..a533dcd 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, NULL, delegate) { + : WebDialogView(profile, delegate) { } KeyboardOverlayDialogView::~KeyboardOverlayDialogView() { diff --git a/chrome/browser/ui/views/web_dialog_view.cc b/chrome/browser/ui/views/web_dialog_view.cc index 6158aeb..c141077 100644 --- a/chrome/browser/ui/views/web_dialog_view.cc +++ b/chrome/browser/ui/views/web_dialog_view.cc @@ -10,7 +10,6 @@ #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" @@ -22,6 +21,8 @@ #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" @@ -39,10 +40,9 @@ 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, browser, delegate), parent); + new WebDialogView(profile, delegate), parent); widget->Show(); return widget->GetNativeWindow(); } @@ -53,13 +53,11 @@ 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 915d2dc..e6a718c4 100644 --- a/chrome/browser/ui/views/web_dialog_view.h +++ b/chrome/browser/ui/views/web_dialog_view.h @@ -18,8 +18,6 @@ #include "ui/views/window/client_view.h" #include "ui/web_dialogs/web_dialog_delegate.h" -class Browser; -class WebDialogController; class Profile; namespace views { @@ -39,7 +37,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 Browser or Profile, only +// TODO(beng): This class should not depend on Profile, only // content::BrowserContext. class WebDialogView : public views::ClientView, @@ -49,7 +47,6 @@ class WebDialogView public TabRenderWatcher::Delegate { public: WebDialogView(Profile* profile, - Browser* browser, ui::WebDialogDelegate* delegate); virtual ~WebDialogView(); @@ -139,9 +136,6 @@ 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 778d8b6..cf4196d 100644 --- a/chrome/browser/ui/views/web_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/web_dialog_view_browsertest.cc @@ -34,9 +34,8 @@ const int kInitialHeight = 40; class TestWebDialogView : public WebDialogView { public: TestWebDialogView(Profile* profile, - Browser* browser, WebDialogDelegate* delegate) - : WebDialogView(profile, browser, delegate), + : WebDialogView(profile, delegate), painted_(false), should_quit_on_size_change_(false) { delegate->GetDialogSize(&last_size_); @@ -111,7 +110,7 @@ IN_PROC_BROWSER_TEST_F(WebDialogBrowserTest, MAYBE_SizeWindow) { delegate->set_size(kInitialWidth, kInitialHeight); TestWebDialogView* view = - new TestWebDialogView(browser()->profile(), browser(), delegate); + new TestWebDialogView(browser()->profile(), delegate); WebContents* web_contents = browser()->GetSelectedWebContents(); ASSERT_TRUE(web_contents != NULL); views::Widget::CreateWindowWithParent( @@ -191,7 +190,7 @@ IN_PROC_BROWSER_TEST_F(WebDialogBrowserTest, DISABLED_WebContentRendered) { GURL(chrome::kChromeUIChromeURLsURL)); TestWebDialogView* view = - new TestWebDialogView(browser()->profile(), browser(), delegate); + new TestWebDialogView(browser()->profile(), 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 4217979..0109280 100644 --- a/chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc +++ b/chrome/browser/ui/webui/chromeos/mobile_setup_dialog.cc @@ -80,7 +80,6 @@ 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 f017d82..f2914b4 100644 --- a/chrome/browser/ui/webui/task_manager/task_manager_dialog.cc +++ b/chrome/browser/ui/webui/task_manager/task_manager_dialog.cc @@ -196,7 +196,6 @@ 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 a5b32b0..7d34bf4 100644 --- a/chrome/browser/ui/webui/web_dialog_controller_browsertest.cc +++ b/chrome/browser/ui/webui/web_dialog_controller_browsertest.cc @@ -5,6 +5,7 @@ #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" @@ -15,10 +16,14 @@ namespace { class TestDialogClosedDelegate : public test::TestWebDialogDelegate { public: - TestDialogClosedDelegate() + explicit TestDialogClosedDelegate(Browser* browser) : 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_; } @@ -32,6 +37,7 @@ class TestDialogClosedDelegate : public test::TestWebDialogDelegate { } private: + scoped_ptr<WebDialogController> web_dialog_controller_; bool dialog_closed_; DISALLOW_COPY_AND_ASSIGN(TestDialogClosedDelegate); @@ -48,7 +54,8 @@ 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()); + scoped_ptr<TestDialogClosedDelegate> delegate( + new TestDialogClosedDelegate(browser)); // Create the dialog and make sure the initial "closed" state is what we // expect. |