Chromium Code Reviews| 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..7c2a4f1359724e6e6cb303523d223e2f785630ee 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,51 @@ 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_TRUE(!tree_empty); |
|
sky
2017/05/18 02:50:15
The not makes this slightly hard to parse, use ASS
Muyuan
2017/05/18 02:58:24
Done.
|
| + |
| + 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())); |
| + |
| + // window12 is filtered out in the above recreation logic. |
|
sky
2017/05/18 02:50:15
ASSERT_TRUE(tree) ?
Muyuan
2017/05/18 02:58:24
Done.
|
| + 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 |