summaryrefslogtreecommitdiffstats
path: root/ui/views/view_unittest.cc
diff options
context:
space:
mode:
authorasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-27 01:52:10 +0000
committerasvitkine@chromium.org <asvitkine@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-27 01:52:10 +0000
commitc17b87ab100e7eb367a4730959dc3d927c3c9cc4 (patch)
treeb056b7843f12a6e7dc0dac915e903320756ac93a /ui/views/view_unittest.cc
parente9856c24dc9a362e793e14f5c7630d97c5b35a41 (diff)
downloadchromium_src-c17b87ab100e7eb367a4730959dc3d927c3c9cc4.zip
chromium_src-c17b87ab100e7eb367a4730959dc3d927c3c9cc4.tar.gz
chromium_src-c17b87ab100e7eb367a4730959dc3d927c3c9cc4.tar.bz2
Fix crash when |View::AddChildView()| is called on an existing child.
This was being triggered by views_examples. BUG=none TEST=New ViewTest.AddExistingChild unit test. Review URL: http://codereview.chromium.org/9288066 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@119328 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/view_unittest.cc')
-rw-r--r--ui/views/view_unittest.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/ui/views/view_unittest.cc b/ui/views/view_unittest.cc
index 79ef2fd..8179f68 100644
--- a/ui/views/view_unittest.cc
+++ b/ui/views/view_unittest.cc
@@ -2502,6 +2502,39 @@ TEST_F(ViewTest, GetViewByID) {
EXPECT_NE(views.end(), i);
}
+TEST_F(ViewTest, AddExistingChild) {
+ View v1, v2, v3;
+
+ v1.AddChildView(&v2);
+ v1.AddChildView(&v3);
+ EXPECT_EQ(0, v1.GetIndexOf(&v2));
+ EXPECT_EQ(1, v1.GetIndexOf(&v3));
+
+ // Check that there's no change in order when adding at same index.
+ v1.AddChildViewAt(&v2, 0);
+ EXPECT_EQ(0, v1.GetIndexOf(&v2));
+ EXPECT_EQ(1, v1.GetIndexOf(&v3));
+ v1.AddChildViewAt(&v3, 1);
+ EXPECT_EQ(0, v1.GetIndexOf(&v2));
+ EXPECT_EQ(1, v1.GetIndexOf(&v3));
+
+ // Add it at a different index and check for change in order.
+ v1.AddChildViewAt(&v2, 1);
+ EXPECT_EQ(1, v1.GetIndexOf(&v2));
+ EXPECT_EQ(0, v1.GetIndexOf(&v3));
+ v1.AddChildViewAt(&v2, 0);
+ EXPECT_EQ(0, v1.GetIndexOf(&v2));
+ EXPECT_EQ(1, v1.GetIndexOf(&v3));
+
+ // Check that calling |AddChildView()| does not change the order.
+ v1.AddChildView(&v2);
+ EXPECT_EQ(0, v1.GetIndexOf(&v2));
+ EXPECT_EQ(1, v1.GetIndexOf(&v3));
+ v1.AddChildView(&v3);
+ EXPECT_EQ(0, v1.GetIndexOf(&v2));
+ EXPECT_EQ(1, v1.GetIndexOf(&v3));
+}
+
////////////////////////////////////////////////////////////////////////////////
// Layers
////////////////////////////////////////////////////////////////////////////////