Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Unified Diff: chrome/browser/chromeos/login/simple_web_view_dialog.cc

Issue 15879007: Support web contents modal dialogs within SimpleWebViewDialog and WebUILoginView (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comment Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/simple_web_view_dialog.cc
diff --git a/chrome/browser/chromeos/login/simple_web_view_dialog.cc b/chrome/browser/chromeos/login/simple_web_view_dialog.cc
index 996f682122f3fb61055b215cc399a91c48261816..f2f9e3d01572dff20a9708fa302b46dbaae441c3 100644
--- a/chrome/browser/chromeos/login/simple_web_view_dialog.cc
+++ b/chrome/browser/chromeos/login/simple_web_view_dialog.cc
@@ -159,6 +159,8 @@ 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);
}
void SimpleWebViewDialog::Init() {
@@ -234,6 +236,14 @@ void SimpleWebViewDialog::Init() {
Layout();
}
+void SimpleWebViewDialog::Layout() {
+ views::WidgetDelegateView::Layout();
+
+ FOR_EACH_OBSERVER(web_modal::WebContentsModalDialogHostObserver,
+ observer_list_,
+ OnPositionRequiresUpdate());
+}
+
views::View* SimpleWebViewDialog::GetContentsView() {
return this;
}
@@ -342,6 +352,33 @@ void SimpleWebViewDialog::ExecuteCommandWithDisposition(
}
}
+web_modal::WebContentsModalDialogHost*
+ SimpleWebViewDialog::GetWebContentsModalDialogHost() {
+ return this;
+}
+
+gfx::NativeView SimpleWebViewDialog::GetHostView() const {
+ return GetWidget()->GetNativeView();
+}
+
+gfx::Point SimpleWebViewDialog::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 SimpleWebViewDialog::AddObserver(
+ web_modal::WebContentsModalDialogHostObserver* observer) {
+ if (observer && !observer_list_.HasObserver(observer))
+ observer_list_.AddObserver(observer);
+}
+
+void SimpleWebViewDialog::RemoveObserver(
+ web_modal::WebContentsModalDialogHostObserver* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
void SimpleWebViewDialog::LoadImages() {
ui::ThemeProvider* tp = GetThemeProvider();
« no previous file with comments | « chrome/browser/chromeos/login/simple_web_view_dialog.h ('k') | chrome/browser/chromeos/login/webui_login_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698