| 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);
|
| }
|
|
|
|
|