Chromium Code Reviews| Index: ui/android/view_android_unittests.cc |
| diff --git a/ui/android/view_android_unittests.cc b/ui/android/view_android_unittests.cc |
| index 77c9bcae16534428660684bb80c2c99af788a641..b2b96b0796fd0d4602e4d0526e3d22552feaadb8 100644 |
| --- a/ui/android/view_android_unittests.cc |
| +++ b/ui/android/view_android_unittests.cc |
| @@ -2,6 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "base/test/gtest_util.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/android/event_forwarder.h" |
| #include "ui/android/view_android.h" |
| @@ -166,4 +167,39 @@ TEST_F(ViewAndroidBoundsTest, MatchesViewsWithOffset) { |
| ExpectHit(client3_); |
| } |
| +#if DCHECK_IS_ON() |
| +TEST(ViewAndroidTest, ChecksMultipleEventForwarders) { |
| + ViewAndroid parent; |
| + ViewAndroid child; |
| + parent.GetEventForwarder(); |
| + child.GetEventForwarder(); |
| + EXPECT_DCHECK_DEATH(parent.AddChild(&child)); |
|
boliu
2017/05/12 01:23:13
I think using EXPECT_DCHECK_DEATH means you don't
Jinsuk Kim
2017/05/12 01:42:57
I preferred not running this test at all but there
|
| + |
| + ViewAndroid parent2; |
| + ViewAndroid child2; |
| + parent2.GetEventForwarder(); |
| + parent2.AddChild(&child2); |
| + EXPECT_DCHECK_DEATH(child2.GetEventForwarder()); |
| + |
| + ViewAndroid window; |
| + ViewAndroid wcv1, wcv2; |
| + ViewAndroid rwhv1a, rwhv1b, rwhv2; |
| + wcv1.GetEventForwarder(); |
| + wcv2.GetEventForwarder(); |
| + |
| + window.AddChild(&wcv1); |
| + wcv1.AddChild(&rwhv1a); |
| + wcv1.AddChild(&rwhv1b); |
| + |
| + wcv2.AddChild(&rwhv2); |
| + |
| + // window should be able to add wcv2 since there's only one event forwarder |
| + // in the path window - wcv2* - rwvh2 |
| + window.AddChild(&wcv2); |
| + |
| + // Additional event forwarder will cause failure. |
| + EXPECT_DCHECK_DEATH(rwhv2.GetEventForwarder()); |
| +} |
| +#endif |
| + |
| } // namespace ui |