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

Unified Diff: chrome/browser/chromeos/login/ui/captive_portal_window_proxy.cc

Issue 319013002: Reland Fix Views web-modal dialog widget creation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Revert MediaGalleriesScanResultDialogViews::AcceptDialogForTesting. Created 6 years, 6 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/ui/captive_portal_window_proxy.cc
diff --git a/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.cc b/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.cc
index c2b224ad84839598b3ec633f0f635c23b9d46f5b..11405f3a2dfcedbc2af4feadbbb176c4db8b1617 100644
--- a/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.cc
+++ b/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.cc
@@ -12,8 +12,25 @@
#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
#include "ui/views/widget/widget.h"
-using web_modal::WebContentsModalDialogManager;
-using web_modal::WebContentsModalDialogManagerDelegate;
+namespace {
+// The captive portal dialog is system-modal, but uses the web-content-modal
+// dialog manager (odd) and requires this atypical dialog widget initialization.
+views::Widget* CreateWindowAsFramelessChild(views::WidgetDelegate* delegate,
+ gfx::NativeView parent) {
+ views::Widget* widget = new views::Widget;
+
+ views::Widget::InitParams params;
+ params.delegate = delegate;
+ params.child = true;
+ params.parent = parent;
+ params.remove_standard_frame = true;
+ params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
+
+ widget->Init(params);
+ return widget;
+}
+
+} // namespace
namespace chromeos {
@@ -54,21 +71,16 @@ void CaptivePortalWindowProxy::Show() {
InitCaptivePortalView();
- CaptivePortalView* captive_portal_view = captive_portal_view_.release();
- WebContentsModalDialogManager* web_contents_modal_dialog_manager =
- WebContentsModalDialogManager::FromWebContents(web_contents_);
- DCHECK(web_contents_modal_dialog_manager);
- WebContentsModalDialogManagerDelegate* delegate =
- web_contents_modal_dialog_manager->delegate();
- DCHECK(delegate);
- widget_ = views::Widget::CreateWindowAsFramelessChild(
- captive_portal_view,
- delegate->GetWebContentsModalDialogHost()->GetHostView());
- captive_portal_view->Init();
+ CaptivePortalView* portal = captive_portal_view_.release();
+ web_modal::WebContentsModalDialogManager* manager =
+ web_modal::WebContentsModalDialogManager::FromWebContents(web_contents_);
+ const gfx::NativeWindow parent =
+ manager->delegate()->GetWebContentsModalDialogHost()->GetHostView();
+ widget_ = CreateWindowAsFramelessChild(portal, parent);
+ portal->Init();
widget_->AddObserver(this);
- web_contents_modal_dialog_manager->ShowModalDialog(
- widget_->GetNativeView());
+ manager->ShowModalDialog(widget_->GetNativeView());
DCHECK(GetState() == STATE_DISPLAYED);
}

Powered by Google App Engine
This is Rietveld 408576698