Commit 6a6b8fd7 authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Host CreateTestWidget() to ViewsTestBase and use it in a few places.

Still many, many more to convert.

Bug: 1056332
Change-Id: I19d411d7583031779bad0a8ff4da4699df6df284
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2080046Reviewed-by: default avatarLeonard Grey <lgrey@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarRobert Liao <robliao@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#745681}
parent 879b222e
......@@ -12,13 +12,3 @@ void ChromeViewsTestBase::SetUp() {
set_views_delegate(std::make_unique<ChromeTestViewsDelegate>());
views::ViewsTestBase::SetUp();
}
std::unique_ptr<views::Widget> ChromeViewsTestBase::CreateTestWidget(
views::Widget::InitParams::Type type) {
auto widget = std::make_unique<views::Widget>();
views::Widget::InitParams params = CreateParams(type);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.bounds = gfx::Rect(0, 0, 400, 400);
widget->Init(std::move(params));
return widget;
}
......@@ -39,10 +39,6 @@ class ChromeViewsTestBase : public views::ViewsTestBase {
// views::ViewsTestBase:
void SetUp() override;
std::unique_ptr<views::Widget> CreateTestWidget(
views::Widget::InitParams::Type type =
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
protected:
// Use this protected member directly to drive tasks posted within a
// ChromeViewsTestBase-based test.
......
......@@ -69,8 +69,15 @@ DOM::Node* FindNodeWithID(int id, DOM::Node* root) {
class DOMAgentTest : public views::ViewsTestBase {
public:
DOMAgentTest() {}
~DOMAgentTest() override {}
DOMAgentTest() = default;
~DOMAgentTest() override = default;
views::Widget::InitParams CreateParams(
views::Widget::InitParams::Type type) override {
views::Widget::InitParams params = views::ViewsTestBase::CreateParams(type);
params.name = name_;
return params;
}
views::internal::NativeWidgetPrivate* CreateTestNativeWidget() {
views::Widget* widget = new views::Widget;
......@@ -83,20 +90,10 @@ class DOMAgentTest : public views::ViewsTestBase {
return widget->native_widget_private();
}
std::unique_ptr<views::Widget> CreateTestWidget(
const gfx::Rect& bounds,
const std::string* name = nullptr) {
auto widget = std::make_unique<views::Widget>();
views::Widget::InitParams params;
params.delegate = nullptr;
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.bounds = bounds;
#if defined(USE_AURA)
params.parent = GetContext();
#endif
if (name)
params.name = *name;
widget->Init(std::move(params));
std::unique_ptr<views::Widget> CreateNamedWidget(const std::string& name) {
name_ = name;
std::unique_ptr<views::Widget> widget = CreateTestWidget();
name_.clear();
widget->Show();
return widget;
}
......@@ -263,6 +260,7 @@ class DOMAgentTest : public views::ViewsTestBase {
std::unique_ptr<DOMAgentViews> dom_agent_;
std::unique_ptr<CSSAgent> css_agent_;
std::unique_ptr<OverlayAgentViews> overlay_agent_;
std::string name_;
DISALLOW_COPY_AND_ASSIGN(DOMAgentTest);
};
......@@ -276,8 +274,7 @@ TEST_F(DOMAgentTest, GetDocumentWithWindowWidgetView) {
// (root/content views)
// child_view
// child_window
std::unique_ptr<views::Widget> widget(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
aura::Window* parent_window = widget->GetNativeWindow();
parent_window->SetName("parent_window");
std::unique_ptr<aura::Window> child_window = CreateChildWindow(parent_window);
......@@ -330,10 +327,8 @@ TEST_F(DOMAgentTest, GetDocumentMultipleWidgets) {
// child_b12
// child_b121
// child_b122
std::unique_ptr<views::Widget> widget_a(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget_b(
CreateTestWidget(gfx::Rect(100, 100, 80, 80)));
std::unique_ptr<views::Widget> widget_a = CreateTestWidget();
std::unique_ptr<views::Widget> widget_b = CreateTestWidget();
widget_a->GetRootView()->AddChildView(new TestView("child_a1"));
widget_a->GetRootView()->AddChildView(new TestView("child_a2"));
......@@ -459,8 +454,8 @@ TEST_F(DOMAgentTest, WindowStackingChangedChildNodeRemovedAndInserted) {
#endif // defined(USE_AURA)
TEST_F(DOMAgentTest, ViewInserted) {
std::unique_ptr<views::Widget> widget(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget =
CreateTestWidget(views::Widget::InitParams::TYPE_WINDOW);
widget->Show();
// Initialize DOMAgent
......@@ -475,8 +470,7 @@ TEST_F(DOMAgentTest, ViewInserted) {
}
TEST_F(DOMAgentTest, ViewRemoved) {
std::unique_ptr<views::Widget> widget(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->Show();
views::View* root_view = widget->GetRootView();
......@@ -495,8 +489,7 @@ TEST_F(DOMAgentTest, ViewRemoved) {
}
TEST_F(DOMAgentTest, ViewRearranged) {
std::unique_ptr<views::Widget> widget(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->Show();
views::View* root_view = widget->GetRootView();
......@@ -536,8 +529,7 @@ TEST_F(DOMAgentTest, ViewRearranged) {
}
TEST_F(DOMAgentTest, ViewRearrangedRemovedAndInserted) {
std::unique_ptr<views::Widget> widget(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->Show();
views::View* root_view = widget->GetRootView();
......@@ -567,8 +559,7 @@ TEST_F(DOMAgentTest, NodeIdToUIElementTest) {
// child_a111
// child_a1111
// child_a112
std::unique_ptr<views::Widget> widget(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->Show();
views::View* root_view = widget->GetRootView();
......@@ -615,10 +606,9 @@ TEST_F(DOMAgentTest, NodeIdToUIElementTest) {
// Tests to ensure dom search for native UI is working
TEST_F(DOMAgentTest, SimpleDomSearch) {
std::unique_ptr<views::Widget> widget_a(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
widget_a->GetRootView()->AddChildView(new TestView("child_a1"));
widget_a->GetRootView()->AddChildView(new TestView("child_a2"));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->GetRootView()->AddChildView(new TestView("child_a1"));
widget->GetRootView()->AddChildView(new TestView("child_a2"));
std::unique_ptr<DOM::Node> root;
dom_agent()->getDocument(&root);
......@@ -643,10 +633,9 @@ TEST_F(DOMAgentTest, SimpleDomSearch) {
}
TEST_F(DOMAgentTest, ExactDomSearch) {
std::unique_ptr<views::Widget> widget_a(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
widget_a->GetRootView()->AddChildView(new TestView("child_a"));
widget_a->GetRootView()->AddChildView(new TestView("child_aa"));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->GetRootView()->AddChildView(new TestView("child_a"));
widget->GetRootView()->AddChildView(new TestView("child_aa"));
std::unique_ptr<DOM::Node> root;
dom_agent()->getDocument(&root);
......@@ -678,12 +667,9 @@ TEST_F(DOMAgentTest, ExactDomSearch) {
TEST_F(DOMAgentTest, TagDomSearch) {
std::string widget_name = "TestElement";
std::unique_ptr<views::Widget> widget_a(
CreateTestWidget(gfx::Rect(1, 1, 80, 80), &widget_name));
std::unique_ptr<views::Widget> widget_b(
CreateTestWidget(gfx::Rect(1, 1, 80, 80), &widget_name));
std::unique_ptr<views::Widget> widget_c(
CreateTestWidget(gfx::Rect(1, 1, 80, 80), &widget_name));
std::unique_ptr<views::Widget> widget_a = CreateNamedWidget(widget_name);
std::unique_ptr<views::Widget> widget_b = CreateNamedWidget(widget_name);
std::unique_ptr<views::Widget> widget_c = CreateNamedWidget(widget_name);
widget_a->GetRootView()->AddChildView(new TestView("WidgetView"));
std::unique_ptr<DOM::Node> root;
......@@ -708,9 +694,8 @@ TEST_F(DOMAgentTest, TagDomSearch) {
}
TEST_F(DOMAgentTest, DomSearchForStylesPanel) {
std::unique_ptr<views::Widget> widget_a(
CreateTestWidget(gfx::Rect(1, 1, 80, 80)));
widget_a->GetRootView()->AddChildView(new TestView("child_a1"));
std::unique_ptr<views::Widget> widget = CreateTestWidget();
widget->GetRootView()->AddChildView(new TestView("child_a1"));
std::unique_ptr<DOM::Node> root;
dom_agent()->getDocument(&root);
......
......@@ -137,6 +137,14 @@ Widget::InitParams ViewsTestBase::CreateParams(Widget::InitParams::Type type) {
return params;
}
std::unique_ptr<Widget> ViewsTestBase::CreateTestWidget(
Widget::InitParams::Type type) {
Widget::InitParams params = CreateParamsForTestWidget(type);
auto widget = std::make_unique<Widget>();
widget->Init(std::move(params));
return widget;
}
bool ViewsTestBase::HasCompositingManager() const {
return has_compositing_manager_;
}
......@@ -158,9 +166,8 @@ NativeWidget* ViewsTestBase::CreateNativeWidgetForTest(
#elif defined(USE_AURA)
// For widgets that have a modal parent, don't force a native widget type.
// This logic matches DesktopTestViewsDelegate as well as ChromeViewsDelegate.
if (init_params.parent &&
init_params.type != views::Widget::InitParams::TYPE_MENU &&
init_params.type != views::Widget::InitParams::TYPE_TOOLTIP) {
if (init_params.parent && init_params.type != Widget::InitParams::TYPE_MENU &&
init_params.type != Widget::InitParams::TYPE_TOOLTIP) {
// Returning null results in using the platform default, which is
// NativeWidgetAura.
return nullptr;
......@@ -184,6 +191,14 @@ NativeWidget* ViewsTestBase::CreateNativeWidgetForTest(
#endif
}
Widget::InitParams ViewsTestBase::CreateParamsForTestWidget(
Widget::InitParams::Type type) {
Widget::InitParams params = CreateParams(type);
params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.bounds = gfx::Rect(0, 0, 400, 400);
return params;
}
void ViewsTestBaseWithNativeWidgetType::SetUp() {
set_native_widget_type(GetParam());
ViewsTestBase::SetUp();
......
......@@ -79,6 +79,10 @@ class ViewsTestBase : public PlatformTest {
// cross-platform tests.
virtual Widget::InitParams CreateParams(Widget::InitParams::Type type);
virtual std::unique_ptr<Widget> CreateTestWidget(
Widget::InitParams::Type type =
Widget::InitParams::TYPE_WINDOW_FRAMELESS);
bool HasCompositingManager() const;
// Simulate an OS-level destruction of the native window held by |widget|.
......@@ -124,6 +128,10 @@ class ViewsTestBase : public PlatformTest {
internal::NativeWidgetDelegate* delegate);
protected:
Widget::InitParams CreateParamsForTestWidget(
Widget::InitParams::Type type =
Widget::InitParams::TYPE_WINDOW_FRAMELESS);
// Initialized first, destroyed last. Use this protected member directly from
// the test body to drive tasks posted within a ViewsTestBase-based test.
base::Optional<base::test::TaskEnvironment> task_environment_;
......
This diff is collapsed.
......@@ -17,18 +17,6 @@
namespace views {
namespace {
// Creates a control widget with the passed in parameters.
// The caller takes ownership of the returned widget.
Widget* CreateControlWidget(aura::Window* parent, const gfx::Rect& bounds) {
Widget::InitParams params(Widget::InitParams::TYPE_CONTROL);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.parent = parent;
params.bounds = bounds;
Widget* widget = new Widget();
widget->Init(std::move(params));
return widget;
}
// Sets the name of |window| and |window|'s layer to |name|.
void SetWindowAndLayerName(aura::Window* window, const std::string& name) {
window->SetName(name);
......@@ -47,13 +35,27 @@ std::string ChildWindowNamesAsString(const aura::Window& parent) {
return names;
}
using WindowReordererTest = ViewsTestBase;
class WindowReordererTest : public ViewsTestBase {
public:
Widget::InitParams CreateParams(Widget::InitParams::Type type) override {
Widget::InitParams params = ViewsTestBase::CreateParams(type);
params.parent = parent_;
return params;
}
std::unique_ptr<Widget> CreateControlWidget(aura::Window* parent) {
parent_ = parent;
return CreateTestWidget(Widget::InitParams::TYPE_CONTROL);
}
private:
aura::Window* parent_ = nullptr;
};
// Test that views with layers and views with associated windows are reordered
// according to the view hierarchy.
TEST_F(WindowReordererTest, Basic) {
std::unique_ptr<Widget> parent(
CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100)));
std::unique_ptr<Widget> parent = CreateControlWidget(root_window());
parent->Show();
aura::Window* parent_window = parent->GetNativeWindow();
......@@ -68,12 +70,10 @@ TEST_F(WindowReordererTest, Basic) {
v->layer()->SetName("v");
contents_view->AddChildView(v);
std::unique_ptr<Widget> w1(
CreateControlWidget(parent_window, gfx::Rect(0, 1, 100, 101)));
std::unique_ptr<Widget> w1 = CreateControlWidget(parent_window);
SetWindowAndLayerName(w1->GetNativeView(), "w1");
w1->Show();
std::unique_ptr<Widget> w2(
CreateControlWidget(parent_window, gfx::Rect(0, 2, 100, 102)));
std::unique_ptr<Widget> w2 = CreateControlWidget(parent_window);
SetWindowAndLayerName(w2->GetNativeView(), "w2");
w2->Show();
......@@ -130,8 +130,7 @@ TEST_F(WindowReordererTest, Basic) {
// - associating the "host" view and window
// all correctly reorder the child windows and layers.
TEST_F(WindowReordererTest, Association) {
std::unique_ptr<Widget> parent(
CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100)));
std::unique_ptr<Widget> parent = CreateControlWidget(root_window());
parent->Show();
aura::Window* parent_window = parent->GetNativeWindow();
......@@ -190,8 +189,7 @@ TEST_F(WindowReordererTest, Association) {
// view and the parent layer of the associated window are different. Test that
// the layers and windows are properly reordered in this case.
TEST_F(WindowReordererTest, HostViewParentHasLayer) {
std::unique_ptr<Widget> parent(
CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100)));
std::unique_ptr<Widget> parent = CreateControlWidget(root_window());
parent->Show();
aura::Window* parent_window = parent->GetNativeWindow();
......@@ -216,8 +214,7 @@ TEST_F(WindowReordererTest, HostViewParentHasLayer) {
v11->layer()->SetName("v11");
v1->AddChildView(v11);
std::unique_ptr<Widget> w(
CreateControlWidget(parent_window, gfx::Rect(0, 1, 100, 101)));
std::unique_ptr<Widget> w = CreateControlWidget(parent_window);
SetWindowAndLayerName(w->GetNativeView(), "w");
w->Show();
......@@ -261,8 +258,7 @@ TEST_F(WindowReordererTest, HostViewParentHasLayer) {
// Test that a layer added beneath a view is restacked correctly.
TEST_F(WindowReordererTest, ViewWithLayerBeneath) {
std::unique_ptr<Widget> parent(
CreateControlWidget(root_window(), gfx::Rect(0, 0, 100, 100)));
std::unique_ptr<Widget> parent = CreateControlWidget(root_window());
parent->Show();
aura::Window* parent_window = parent->GetNativeWindow();
......@@ -285,8 +281,7 @@ TEST_F(WindowReordererTest, ViewWithLayerBeneath) {
// Add a hosted window to make WindowReorderer::ReorderChildWindows() restack
// layers.
std::unique_ptr<Widget> child_widget(
CreateControlWidget(parent_window, gfx::Rect(gfx::Rect(0, 0, 50, 50))));
std::unique_ptr<Widget> child_widget = CreateControlWidget(parent_window);
SetWindowAndLayerName(child_widget->GetNativeView(), "child_widget");
child_widget->Show();
View* host_view = contents_view->AddChildView(std::make_unique<View>());
......
......@@ -92,12 +92,8 @@ class DialogTest : public ViewsTestBase {
// These tests all expect to use a custom frame on the dialog so they can
// control hit-testing and other behavior. Custom frames are only supported
// with a parent widget, so create the parent widget here.
views::Widget::InitParams params =
CreateParams(views::Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(10, 11, 200, 200);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
parent_widget_.Init(std::move(params));
parent_widget_.Show();
parent_widget_ = CreateTestWidget();
parent_widget_->Show();
InitializeDialog();
ShowDialog();
......@@ -105,7 +101,7 @@ class DialogTest : public ViewsTestBase {
void TearDown() override {
dialog_->TearDown();
parent_widget_.Close();
parent_widget_.reset();
ViewsTestBase::TearDown();
}
......@@ -126,7 +122,7 @@ class DialogTest : public ViewsTestBase {
views::Widget* CreateDialogWidget(DialogDelegate* dialog) {
views::Widget* widget = DialogDelegate::CreateDialogWidget(
dialog, GetContext(), parent_widget_.GetNativeView());
dialog, GetContext(), parent_widget_->GetNativeView());
return widget;
}
......@@ -139,7 +135,7 @@ class DialogTest : public ViewsTestBase {
}
TestDialog* dialog() const { return dialog_; }
views::Widget* parent_widget() { return &parent_widget_; }
views::Widget* parent_widget() { return parent_widget_.get(); }
protected:
bool accepted_ = false;
......@@ -147,7 +143,7 @@ class DialogTest : public ViewsTestBase {
bool closed_ = false;
private:
views::Widget parent_widget_;
std::unique_ptr<views::Widget> parent_widget_;
TestDialog* dialog_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(DialogTest);
......
......@@ -12,8 +12,6 @@
namespace views {
namespace test {
using NonClientViewTest = ViewsTestBase;
namespace {
class NonClientFrameTestView : public NativeFrameView {
......@@ -58,18 +56,24 @@ class TestWidgetDelegate : public WidgetDelegateView {
}
};
class NonClientViewTest : public ViewsTestBase {
public:
Widget::InitParams CreateParams(Widget::InitParams::Type type) override {
Widget::InitParams params = ViewsTestBase::CreateParams(type);
params.delegate = new TestWidgetDelegate;
return params;
}
};
} // namespace
// Ensure Layout() is not called excessively on a ClientView when Widget bounds
// are changing.
TEST_F(NonClientViewTest, OnlyLayoutChildViewsOnce) {
Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
params.delegate = new TestWidgetDelegate;
params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
views::Widget widget;
widget.Init(std::move(params));
std::unique_ptr<views::Widget> widget =
CreateTestWidget(Widget::InitParams::TYPE_WINDOW);
NonClientView* non_client_view = widget.non_client_view();
NonClientView* non_client_view = widget->non_client_view();
non_client_view->Layout();
auto* frame_view =
......@@ -86,7 +90,7 @@ TEST_F(NonClientViewTest, OnlyLayoutChildViewsOnce) {
EXPECT_EQ(client_view->layout_count(), initial_client_view_layouts);
// Ensure changing bounds triggers a (single) layout.
widget.SetBounds(gfx::Rect(0, 0, 161, 100));
widget->SetBounds(gfx::Rect(0, 0, 161, 100));
EXPECT_EQ(frame_view->layout_count(), initial_frame_view_layouts + 1);
EXPECT_EQ(client_view->layout_count(), initial_client_view_layouts + 1);
}
......
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