diff options
12 files changed, 32 insertions, 6 deletions
diff --git a/apps/shell_window.cc b/apps/shell_window.cc index 23d63f8..425adf6 100644 --- a/apps/shell_window.cc +++ b/apps/shell_window.cc @@ -91,7 +91,7 @@ void ShellWindow::Init(const GURL& url, web_contents->SetDelegate(this); WebContentsModalDialogManager::FromWebContents(web_contents)-> - set_delegate(this); + SetDelegate(this); extensions::SetViewType(web_contents, extensions::VIEW_TYPE_APP_SHELL); // Initialize the window diff --git a/chrome/browser/chromeos/login/simple_web_view_dialog.cc b/chrome/browser/chromeos/login/simple_web_view_dialog.cc index 02596e4..a3fa375 100644 --- a/chrome/browser/chromeos/login/simple_web_view_dialog.cc +++ b/chrome/browser/chromeos/login/simple_web_view_dialog.cc @@ -160,7 +160,7 @@ void SimpleWebViewDialog::StartLoad(const GURL& url) { // LoginHandlerViews uses a constrained window for the password manager view. WebContentsModalDialogManager::CreateForWebContents(web_contents); WebContentsModalDialogManager::FromWebContents(web_contents)-> - set_delegate(this); + SetDelegate(this); } void SimpleWebViewDialog::Init() { diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc index d3051f7..d15a607 100644 --- a/chrome/browser/chromeos/login/webui_login_view.cc +++ b/chrome/browser/chromeos/login/webui_login_view.cc @@ -218,7 +218,7 @@ void WebUILoginView::Init(views::Widget* login_window) { // LoginHandlerViews uses a constrained window for the password manager view. WebContentsModalDialogManager::CreateForWebContents(web_contents); WebContentsModalDialogManager::FromWebContents(web_contents)-> - set_delegate(this); + SetDelegate(this); web_contents->SetDelegate(this); renderer_preferences_util::UpdateFromSystemSettings( diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index f6462a2..7388727 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -271,7 +271,7 @@ void ExtensionHost::LoadInitialURL() { web_modal::WebContentsModalDialogManager::CreateForWebContents( host_contents_.get()); web_modal::WebContentsModalDialogManager::FromWebContents( - host_contents_.get())->set_delegate(this); + host_contents_.get())->SetDelegate(this); } #endif diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index bc4d0c2..832ceee 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -2086,7 +2086,7 @@ void Browser::SetAsDelegate(WebContents* web_contents, Browser* delegate) { set_delegate(delegate); BookmarkTabHelper::FromWebContents(web_contents)->set_delegate(delegate); WebContentsModalDialogManager::FromWebContents(web_contents)-> - set_delegate(delegate); + SetDelegate(delegate); CoreTabHelper::FromWebContents(web_contents)->set_delegate(delegate); SearchEngineTabHelper::FromWebContents(web_contents)->set_delegate(delegate); ZoomController::FromWebContents(web_contents)->set_observer(delegate); diff --git a/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm b/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm index ef73a61..5d19bc6 100644 --- a/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm +++ b/chrome/browser/ui/cocoa/web_contents_modal_dialog_manager_cocoa.mm @@ -43,6 +43,10 @@ class NativeWebContentsModalDialogManagerCocoa GetConstrainedWindowMac(dialog)->PulseWebContentsModalDialog(); } + virtual void HostChanged( + web_modal::WebContentsModalDialogHost* new_host) OVERRIDE { + } + private: static ConstrainedWindowMac* GetConstrainedWindowMac( NativeWebContentsModalDialog dialog) { diff --git a/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc b/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc index a89bef2..5eba5a9 100644 --- a/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc +++ b/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc @@ -86,6 +86,10 @@ class NativeWebContentsModalDialogManagerGtk virtual void PulseDialog(NativeWebContentsModalDialog dialog) OVERRIDE { } + virtual void HostChanged( + web_modal::WebContentsModalDialogHost* new_host) OVERRIDE { + } + private: typedef ChromeWebContentsViewDelegateGtk TabContentsViewType; diff --git a/chrome/browser/ui/views/web_contents_modal_dialog_manager_views.cc b/chrome/browser/ui/views/web_contents_modal_dialog_manager_views.cc index d7e9d51..10b1e2b 100644 --- a/chrome/browser/ui/views/web_contents_modal_dialog_manager_views.cc +++ b/chrome/browser/ui/views/web_contents_modal_dialog_manager_views.cc @@ -167,6 +167,10 @@ class NativeWebContentsModalDialogManagerViews WidgetClosing(widget); } + virtual void HostChanged( + web_modal::WebContentsModalDialogHost* new_host) OVERRIDE { + } + private: #if defined(USE_AURA) // aura::WindowObserver overrides diff --git a/components/web_modal/native_web_contents_modal_dialog_manager.h b/components/web_modal/native_web_contents_modal_dialog_manager.h index 7145a08..4df3680 100644 --- a/components/web_modal/native_web_contents_modal_dialog_manager.h +++ b/components/web_modal/native_web_contents_modal_dialog_manager.h @@ -13,6 +13,8 @@ class WebContents; namespace web_modal { +class WebContentsModalDialogHost; + // Interface from NativeWebContentsModalDialogManager to // WebContentsModalDialogManager. class NativeWebContentsModalDialogManagerDelegate { @@ -54,6 +56,9 @@ class NativeWebContentsModalDialogManager { // Runs a pulse animation for the web contents modal dialog. virtual void PulseDialog(NativeWebContentsModalDialog dialog) = 0; + // Called when the host view for the dialog has changed. + virtual void HostChanged(WebContentsModalDialogHost* new_host) = 0; + protected: NativeWebContentsModalDialogManager() {} diff --git a/components/web_modal/web_contents_modal_dialog_manager.cc b/components/web_modal/web_contents_modal_dialog_manager.cc index 0e07f8d..f30b6a0 100644 --- a/components/web_modal/web_contents_modal_dialog_manager.cc +++ b/components/web_modal/web_contents_modal_dialog_manager.cc @@ -25,6 +25,13 @@ WebContentsModalDialogManager::~WebContentsModalDialogManager() { DCHECK(child_dialogs_.empty()); } +void WebContentsModalDialogManager::SetDelegate( + WebContentsModalDialogManagerDelegate* d) { + delegate_ = d; + // Delegate can be NULL on Views/Win32 during tab drag. + native_manager_->HostChanged(d ? d->GetWebContentsModalDialogHost() : NULL); +} + void WebContentsModalDialogManager::ShowDialog( NativeWebContentsModalDialog dialog) { child_dialogs_.push_back(dialog); diff --git a/components/web_modal/web_contents_modal_dialog_manager.h b/components/web_modal/web_contents_modal_dialog_manager.h index e2548c0..09115f0 100644 --- a/components/web_modal/web_contents_modal_dialog_manager.h +++ b/components/web_modal/web_contents_modal_dialog_manager.h @@ -29,7 +29,7 @@ class WebContentsModalDialogManager virtual ~WebContentsModalDialogManager(); WebContentsModalDialogManagerDelegate* delegate() const { return delegate_; } - void set_delegate(WebContentsModalDialogManagerDelegate* d) { delegate_ = d; } + void SetDelegate(WebContentsModalDialogManagerDelegate* d); static NativeWebContentsModalDialogManager* CreateNativeManager( NativeWebContentsModalDialogManagerDelegate* native_delegate); diff --git a/components/web_modal/web_contents_modal_dialog_manager_unittest.cc b/components/web_modal/web_contents_modal_dialog_manager_unittest.cc index 1268896..da4d227 100644 --- a/components/web_modal/web_contents_modal_dialog_manager_unittest.cc +++ b/components/web_modal/web_contents_modal_dialog_manager_unittest.cc @@ -41,6 +41,8 @@ class NativeWebContentsModalDialogManagerCloseTest } virtual void PulseDialog(NativeWebContentsModalDialog dialog) OVERRIDE { } + virtual void HostChanged(WebContentsModalDialogHost* new_host) OVERRIDE { + } int close_count; NativeWebContentsModalDialogManagerDelegate* delegate_; |