| Index: ui/wm/core/window_util_unittest.cc
|
| diff --git a/ui/wm/core/window_util_unittest.cc b/ui/wm/core/window_util_unittest.cc
|
| index 4a7fedb1af7aa45c7b7e9b9168341383b349a764..10de1caa0997b33458924bd36ef8fd8db6639659 100644
|
| --- a/ui/wm/core/window_util_unittest.cc
|
| +++ b/ui/wm/core/window_util_unittest.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <memory>
|
|
|
| +#include "base/bind.h"
|
| #include "ui/aura/test/aura_test_base.h"
|
| #include "ui/aura/test/test_windows.h"
|
| #include "ui/aura/window.h"
|
| @@ -50,4 +51,52 @@ TEST_F(WindowUtilTest, RecreateLayers) {
|
| window11.reset();
|
| }
|
|
|
| +// Test if map_func is correctly executed in RecreateLayerWithClosure.
|
| +TEST_F(WindowUtilTest, RecreateLayersWithClosure) {
|
| + std::unique_ptr<aura::Window> window1(
|
| + aura::test::CreateTestWindowWithId(0, NULL));
|
| + std::unique_ptr<aura::Window> window11(
|
| + aura::test::CreateTestWindowWithId(1, window1.get()));
|
| + std::unique_ptr<aura::Window> window12(
|
| + aura::test::CreateTestWindowWithId(2, window1.get()));
|
| +
|
| + ASSERT_EQ(2u, window1->layer()->children().size());
|
| +
|
| + auto tree_empty = wm::RecreateLayersWithClosure(
|
| + window1.get(),
|
| + base::BindRepeating(
|
| + [](const aura::Window* to_filter,
|
| + ui::LayerOwner* owner) -> std::unique_ptr<ui::Layer> {
|
| + if (owner->layer() == to_filter->layer())
|
| + return nullptr;
|
| + return owner->RecreateLayer();
|
| + },
|
| + window1.get()));
|
| +
|
| + // The root is filtered. RecreateLayersWithClosure should return nullptr.
|
| + ASSERT_FALSE(tree_empty);
|
| +
|
| + auto tree = wm::RecreateLayersWithClosure(
|
| + window1.get(),
|
| + base::BindRepeating(
|
| + [](const aura::Window* to_filter,
|
| + ui::LayerOwner* owner) -> std::unique_ptr<ui::Layer> {
|
| + if (owner->layer() == to_filter->layer())
|
| + return nullptr;
|
| + return owner->RecreateLayer();
|
| + },
|
| + window12.get()));
|
| +
|
| + ASSERT_TRUE(tree);
|
| + // window12 is filtered out in the above recreation logic.
|
| + ASSERT_EQ(1u, tree->root()->children().size());
|
| + // Child layer is new instance.
|
| + EXPECT_NE(window11->layer(), tree->root()->children()[0]);
|
| +
|
| + // The original window should have both.
|
| + ASSERT_EQ(2u, window1->layer()->children().size());
|
| + EXPECT_EQ(window11->layer(), window1->layer()->children()[0]);
|
| + EXPECT_EQ(window12->layer(), window1->layer()->children()[1]);
|
| +}
|
| +
|
| } // namespace wm
|
|
|