summaryrefslogtreecommitdiffstats
path: root/ui/wm
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-20 22:12:35 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-20 22:12:35 +0000
commit847efe38a3c863715b2a62250ba2311165e3c9b8 (patch)
treecc00fc1aa73c2428da69afc18645234417810195 /ui/wm
parente312acafed0b2fe4be40b57f61b679b404534f73 (diff)
downloadchromium_src-847efe38a3c863715b2a62250ba2311165e3c9b8.zip
chromium_src-847efe38a3c863715b2a62250ba2311165e3c9b8.tar.gz
chromium_src-847efe38a3c863715b2a62250ba2311165e3c9b8.tar.bz2
Reset owner upon acquisition
BUG=351463 TEST=WindowTest.AcquireLayer, WindowUtilTest.RecreaetLayers Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=258004 Review URL: https://codereview.chromium.org/202163003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258432 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/wm')
-rw-r--r--ui/wm/core/window_util_unittest.cc49
-rw-r--r--ui/wm/wm.gyp1
2 files changed, 50 insertions, 0 deletions
diff --git a/ui/wm/core/window_util_unittest.cc b/ui/wm/core/window_util_unittest.cc
new file mode 100644
index 0000000..fb72371
--- /dev/null
+++ b/ui/wm/core/window_util_unittest.cc
@@ -0,0 +1,49 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/wm/core/window_util.h"
+
+#include "base/memory/scoped_ptr.h"
+#include "ui/aura/test/aura_test_base.h"
+#include "ui/aura/test/test_windows.h"
+#include "ui/aura/window.h"
+#include "ui/compositor/layer.h"
+#include "ui/compositor/layer_tree_owner.h"
+
+namespace wm {
+
+typedef aura::test::AuraTestBase WindowUtilTest;
+
+// Test if the recreate layers does not recreate layers that have
+// already been acquired.
+TEST_F(WindowUtilTest, RecreateLayers) {
+ scoped_ptr<aura::Window> window1(
+ aura::test::CreateTestWindowWithId(0, NULL));
+ scoped_ptr<aura::Window> window11(
+ aura::test::CreateTestWindowWithId(1, window1.get()));
+ scoped_ptr<aura::Window> window12(
+ aura::test::CreateTestWindowWithId(2, window1.get()));
+
+ ASSERT_EQ(2u, window1->layer()->children().size());
+
+ scoped_ptr<ui::Layer> acquired(window11->AcquireLayer());
+ EXPECT_TRUE(acquired.get());
+ EXPECT_EQ(acquired.get(), window11->layer());
+
+ scoped_ptr<ui::LayerTreeOwner> tree =
+ wm::RecreateLayers(window1.get());
+
+ // The detached layer should not have the layer that has
+ // already been detached.
+ ASSERT_EQ(1u, tree->root()->children().size());
+ // Child layer is new instance.
+ EXPECT_NE(window11->layer(), tree->root()->children()[0]);
+ EXPECT_NE(window12->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
diff --git a/ui/wm/wm.gyp b/ui/wm/wm.gyp
index 9e7a308..a1960ec 100644
--- a/ui/wm/wm.gyp
+++ b/ui/wm/wm.gyp
@@ -130,6 +130,7 @@
'core/transient_window_stacking_client_unittest.cc',
'core/visibility_controller_unittest.cc',
'core/window_animations_unittest.cc',
+ 'core/window_util_unittest.cc',
],
},
],