Index: chrome/browser/chromeos/login/webui_login_view.cc |
diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc |
index 545e4b350c6bc21b94f49ae00224a5dbaf8c8f5f..c9a456420e29275f22bdc3fd16741b65d2f631db 100644 |
--- a/chrome/browser/chromeos/login/webui_login_view.cc |
+++ b/chrome/browser/chromeos/login/webui_login_view.cc |
@@ -198,6 +198,8 @@ 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); |
web_contents->SetDelegate(this); |
renderer_preferences_util::UpdateFromSystemSettings( |
@@ -213,6 +215,33 @@ const char* WebUILoginView::GetClassName() const { |
return kViewClassName; |
} |
+web_modal::WebContentsModalDialogHost* |
+ WebUILoginView::GetWebContentsModalDialogHost() { |
+ return this; |
+} |
+ |
+gfx::NativeView WebUILoginView::GetHostView() const { |
+ return GetWidget()->GetNativeView(); |
+} |
+ |
+gfx::Point WebUILoginView::GetDialogPosition(const gfx::Size& size) { |
+ // Center the widget. |
+ gfx::Size widget_size = GetWidget()->GetWindowBoundsInScreen().size(); |
+ return gfx::Point(widget_size.width() / 2 - size.width() / 2, |
+ widget_size.height() / 2 - size.height() / 2); |
+} |
+ |
+void WebUILoginView::AddObserver( |
+ web_modal::WebContentsModalDialogHostObserver* observer) { |
+ if (observer && !observer_list_.HasObserver(observer)) |
+ observer_list_.AddObserver(observer); |
+} |
+ |
+void WebUILoginView::RemoveObserver( |
+ web_modal::WebContentsModalDialogHostObserver* observer) { |
+ observer_list_.RemoveObserver(observer); |
+} |
+ |
bool WebUILoginView::AcceleratorPressed( |
const ui::Accelerator& accelerator) { |
AccelMap::const_iterator entry = accel_map_.find(accelerator); |
@@ -299,6 +328,10 @@ void WebUILoginView::SetUIEnabled(bool enabled) { |
void WebUILoginView::Layout() { |
DCHECK(webui_login_); |
webui_login_->SetBoundsRect(bounds()); |
+ |
+ FOR_EACH_OBSERVER(web_modal::WebContentsModalDialogHostObserver, |
+ observer_list_, |
+ OnPositionRequiresUpdate()); |
} |
void WebUILoginView::OnLocaleChanged() { |