Commit 04c37c71 authored by Elly Fong-Jones's avatar Elly Fong-Jones Committed by Commit Bot

chromeos: make SimpleWebViewDialog no longer a WidgetDelegate

Now, the WidgetDelegate is separately created and configured by an
instance method, but this class does not inherit from WidgetDelegate
any more or override any of its methods.

Bug: 1075649
Change-Id: I5c2a7f90b120c6fd7e757a537a97df040436f4ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2463992
Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816330}
parent 692bd751
......@@ -13,6 +13,7 @@
#include "components/captive_portal/core/captive_portal_detector.h"
#include "content/public/browser/web_contents.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/views/widget/widget_delegate.h"
#include "url/gurl.h"
namespace {
......@@ -38,13 +39,7 @@ namespace chromeos {
CaptivePortalView::CaptivePortalView(Profile* profile,
CaptivePortalWindowProxy* proxy)
: SimpleWebViewDialog(profile), proxy_(proxy), redirected_(false) {
SetCanResize(false);
SetModalType(ui::MODAL_TYPE_SYSTEM);
SetShowTitle(true);
SetTitle(WindowTitleForNetwork(
NetworkHandler::Get()->network_state_handler()->DefaultNetwork()));
}
: SimpleWebViewDialog(profile), proxy_(proxy), redirected_(false) {}
CaptivePortalView::~CaptivePortalView() {}
......@@ -78,4 +73,14 @@ void CaptivePortalView::LoadingStateChanged(content::WebContents* source,
// proxy_->OnOriginalURLLoaded();
}
std::unique_ptr<views::WidgetDelegate> CaptivePortalView::MakeWidgetDelegate() {
auto delegate = SimpleWebViewDialog::MakeWidgetDelegate();
delegate->SetCanResize(false);
delegate->SetModalType(ui::MODAL_TYPE_SYSTEM);
delegate->SetShowTitle(true);
delegate->SetTitle(WindowTitleForNetwork(
NetworkHandler::Get()->network_state_handler()->DefaultNetwork()));
return delegate;
}
} // namespace chromeos
......@@ -27,6 +27,9 @@ class CaptivePortalView : public SimpleWebViewDialog {
void LoadingStateChanged(content::WebContents* source,
bool to_different_document) override;
// Overridden from SimpleWebViewDialog:
std::unique_ptr<views::WidgetDelegate> MakeWidgetDelegate() override;
private:
// Contains CaptivePortalWindowProxy to be notified when redirection state is
// resolved.
......
......@@ -43,13 +43,14 @@ const ui::ThemeProvider* CaptivePortalWidget::GetThemeProvider() const {
// 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(Profile* profile,
views::WidgetDelegate* delegate,
views::Widget* CreateWindowAsFramelessChild(
Profile* profile,
std::unique_ptr<views::WidgetDelegate> delegate,
gfx::NativeView parent) {
views::Widget* widget = new CaptivePortalWidget(profile);
views::Widget::InitParams params;
params.delegate = delegate;
params.delegate = delegate.release();
params.child = true;
params.parent = parent;
params.opacity = views::Widget::InitParams::WindowOpacity::kTranslucent;
......@@ -100,11 +101,14 @@ void CaptivePortalWindowProxy::Show() {
InitCaptivePortalView();
CaptivePortalView* portal = captive_portal_view_.release();
std::unique_ptr<views::WidgetDelegate> delegate =
captive_portal_view_->MakeWidgetDelegate();
CaptivePortalView* portal =
delegate->SetContentsView(std::move(captive_portal_view_));
auto* manager =
web_modal::WebContentsModalDialogManager::FromWebContents(web_contents_);
widget_ = CreateWindowAsFramelessChild(
profile_, portal,
profile_, std::move(delegate),
manager->delegate()->GetWebContentsModalDialogHost()->GetHostView());
portal->Init();
widget_->AddObserver(this);
......
......@@ -37,6 +37,7 @@
#include "ui/views/layout/grid_layout.h"
#include "ui/views/view.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
using content::WebContents;
using views::GridLayout;
......@@ -246,14 +247,6 @@ void SimpleWebViewDialog::Init() {
Layout();
}
void SimpleWebViewDialog::Layout() {
views::WidgetDelegateView::Layout();
}
views::View* SimpleWebViewDialog::GetInitiallyFocusedView() {
return web_view_;
}
void SimpleWebViewDialog::ButtonPressed(views::Button* sender,
const ui::Event& event) {
command_updater_->ExecuteCommand(sender->tag());
......@@ -335,6 +328,14 @@ void SimpleWebViewDialog::ExecuteCommandWithDisposition(int id,
}
}
std::unique_ptr<views::WidgetDelegate>
SimpleWebViewDialog::MakeWidgetDelegate() {
auto delegate = std::make_unique<views::WidgetDelegate>();
delegate->SetInitiallyFocusedView(web_view_);
delegate->SetOwnedByWidget(true);
return delegate;
}
void SimpleWebViewDialog::LoadImages() {
const ui::ThemeProvider* tp = GetThemeProvider();
......
......@@ -15,7 +15,6 @@
#include "content/public/browser/page_navigator.h"
#include "content/public/browser/web_contents_delegate.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/widget/widget_delegate.h"
#include "url/gurl.h"
class CommandUpdaterImpl;
......@@ -26,6 +25,7 @@ class LocationBarModel;
namespace views {
class WebView;
class Widget;
class WidgetDelegate;
} // namespace views
namespace chromeos {
......@@ -38,7 +38,7 @@ class StubBubbleModelDelegate;
// to be used for sign in to captive portal on login screen (when Browser
// isn't running).
class SimpleWebViewDialog : public views::ButtonListener,
public views::WidgetDelegateView,
public views::View,
public LocationBarView::Delegate,
public ChromeLocationBarModelDelegate,
public CommandUpdaterDelegate,
......@@ -54,12 +54,6 @@ class SimpleWebViewDialog : public views::ButtonListener,
// Inits view. Should be attached to a Widget before call.
void Init();
// Overridden from views::View:
void Layout() override;
// Overridden from views::WidgetDelegate:
views::View* GetInitiallyFocusedView() override;
// Implements views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
......@@ -85,6 +79,8 @@ class SimpleWebViewDialog : public views::ButtonListener,
// Implements CommandUpdaterDelegate:
void ExecuteCommandWithDisposition(int id, WindowOpenDisposition) override;
virtual std::unique_ptr<views::WidgetDelegate> MakeWidgetDelegate();
private:
friend class SimpleWebViewDialogTest;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment