OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1104 // windows. It additionally tests whether the destruction of these windows | 1104 // windows. It additionally tests whether the destruction of these windows |
1105 // occurs correctly in desktop AURA without crashing. | 1105 // occurs correctly in desktop AURA without crashing. |
1106 // It provides facilities to test the following cases:- | 1106 // It provides facilities to test the following cases:- |
1107 // 1. Child window destroyed which should lead to the destruction of the | 1107 // 1. Child window destroyed which should lead to the destruction of the |
1108 // parent. | 1108 // parent. |
1109 // 2. Parent window destroyed which should lead to the child being destroyed. | 1109 // 2. Parent window destroyed which should lead to the child being destroyed. |
1110 class DesktopAuraTopLevelWindowTest | 1110 class DesktopAuraTopLevelWindowTest |
1111 : public views::TestViewsDelegate, | 1111 : public views::TestViewsDelegate, |
1112 public aura::WindowObserver { | 1112 public aura::WindowObserver { |
1113 public: | 1113 public: |
1114 DesktopAuraTopLevelWindowTest() | 1114 explicit DesktopAuraTopLevelWindowTest(ui::ContextFactory* context_factory) |
1115 : top_level_widget_(NULL), | 1115 : top_level_widget_(NULL), |
1116 owned_window_(NULL), | 1116 owned_window_(NULL), |
1117 owner_destroyed_(false), | 1117 owner_destroyed_(false), |
1118 owned_window_destroyed_(false) {} | 1118 owned_window_destroyed_(false) { |
| 1119 set_context_factory(context_factory); |
| 1120 } |
1119 | 1121 |
1120 virtual ~DesktopAuraTopLevelWindowTest() { | 1122 virtual ~DesktopAuraTopLevelWindowTest() { |
1121 EXPECT_TRUE(owner_destroyed_); | 1123 EXPECT_TRUE(owner_destroyed_); |
1122 EXPECT_TRUE(owned_window_destroyed_); | 1124 EXPECT_TRUE(owned_window_destroyed_); |
1123 top_level_widget_ = NULL; | 1125 top_level_widget_ = NULL; |
1124 owned_window_ = NULL; | 1126 owned_window_ = NULL; |
1125 } | 1127 } |
1126 | 1128 |
1127 // views::TestViewsDelegate overrides. | 1129 // views::TestViewsDelegate overrides. |
1128 virtual void OnBeforeWidgetInit( | 1130 virtual void OnBeforeWidgetInit( |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1202 aura::Window* owned_window_; | 1204 aura::Window* owned_window_; |
1203 bool owner_destroyed_; | 1205 bool owner_destroyed_; |
1204 bool owned_window_destroyed_; | 1206 bool owned_window_destroyed_; |
1205 aura::test::TestWindowDelegate child_window_delegate_; | 1207 aura::test::TestWindowDelegate child_window_delegate_; |
1206 | 1208 |
1207 DISALLOW_COPY_AND_ASSIGN(DesktopAuraTopLevelWindowTest); | 1209 DISALLOW_COPY_AND_ASSIGN(DesktopAuraTopLevelWindowTest); |
1208 }; | 1210 }; |
1209 | 1211 |
1210 TEST_F(WidgetTest, DesktopAuraFullscreenWindowDestroyedBeforeOwnerTest) { | 1212 TEST_F(WidgetTest, DesktopAuraFullscreenWindowDestroyedBeforeOwnerTest) { |
1211 ViewsDelegate::views_delegate = NULL; | 1213 ViewsDelegate::views_delegate = NULL; |
1212 DesktopAuraTopLevelWindowTest fullscreen_window; | 1214 DesktopAuraTopLevelWindowTest fullscreen_window(context_factory()); |
1213 ASSERT_NO_FATAL_FAILURE(fullscreen_window.CreateTopLevelWindow( | 1215 ASSERT_NO_FATAL_FAILURE(fullscreen_window.CreateTopLevelWindow( |
1214 gfx::Rect(0, 0, 200, 200), true)); | 1216 gfx::Rect(0, 0, 200, 200), true)); |
1215 | 1217 |
1216 RunPendingMessages(); | 1218 RunPendingMessages(); |
1217 ASSERT_NO_FATAL_FAILURE(fullscreen_window.DestroyOwnedWindow()); | 1219 ASSERT_NO_FATAL_FAILURE(fullscreen_window.DestroyOwnedWindow()); |
1218 RunPendingMessages(); | 1220 RunPendingMessages(); |
1219 } | 1221 } |
1220 | 1222 |
1221 TEST_F(WidgetTest, DesktopAuraFullscreenWindowOwnerDestroyed) { | 1223 TEST_F(WidgetTest, DesktopAuraFullscreenWindowOwnerDestroyed) { |
1222 ViewsDelegate::views_delegate = NULL; | 1224 ViewsDelegate::views_delegate = NULL; |
1223 | 1225 |
1224 DesktopAuraTopLevelWindowTest fullscreen_window; | 1226 DesktopAuraTopLevelWindowTest fullscreen_window(context_factory()); |
1225 ASSERT_NO_FATAL_FAILURE(fullscreen_window.CreateTopLevelWindow( | 1227 ASSERT_NO_FATAL_FAILURE(fullscreen_window.CreateTopLevelWindow( |
1226 gfx::Rect(0, 0, 200, 200), true)); | 1228 gfx::Rect(0, 0, 200, 200), true)); |
1227 | 1229 |
1228 RunPendingMessages(); | 1230 RunPendingMessages(); |
1229 ASSERT_NO_FATAL_FAILURE(fullscreen_window.DestroyOwnerWindow()); | 1231 ASSERT_NO_FATAL_FAILURE(fullscreen_window.DestroyOwnerWindow()); |
1230 RunPendingMessages(); | 1232 RunPendingMessages(); |
1231 } | 1233 } |
1232 | 1234 |
1233 TEST_F(WidgetTest, DesktopAuraTopLevelOwnedPopupTest) { | 1235 TEST_F(WidgetTest, DesktopAuraTopLevelOwnedPopupTest) { |
1234 ViewsDelegate::views_delegate = NULL; | 1236 ViewsDelegate::views_delegate = NULL; |
1235 DesktopAuraTopLevelWindowTest popup_window; | 1237 DesktopAuraTopLevelWindowTest popup_window(context_factory()); |
1236 ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow( | 1238 ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow( |
1237 gfx::Rect(0, 0, 200, 200), false)); | 1239 gfx::Rect(0, 0, 200, 200), false)); |
1238 | 1240 |
1239 RunPendingMessages(); | 1241 RunPendingMessages(); |
1240 ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow()); | 1242 ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow()); |
1241 RunPendingMessages(); | 1243 RunPendingMessages(); |
1242 } | 1244 } |
1243 | 1245 |
1244 // This test validates that when a top level owned popup Aura window is | 1246 // This test validates that when a top level owned popup Aura window is |
1245 // resized, the widget is resized as well. | 1247 // resized, the widget is resized as well. |
1246 TEST_F(WidgetTest, DesktopAuraTopLevelOwnedPopupResizeTest) { | 1248 TEST_F(WidgetTest, DesktopAuraTopLevelOwnedPopupResizeTest) { |
1247 ViewsDelegate::views_delegate = NULL; | 1249 ViewsDelegate::views_delegate = NULL; |
1248 DesktopAuraTopLevelWindowTest popup_window; | 1250 DesktopAuraTopLevelWindowTest popup_window(context_factory()); |
1249 ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow( | 1251 ASSERT_NO_FATAL_FAILURE(popup_window.CreateTopLevelWindow( |
1250 gfx::Rect(0, 0, 200, 200), false)); | 1252 gfx::Rect(0, 0, 200, 200), false)); |
1251 | 1253 |
1252 gfx::Rect new_size(0, 0, 400, 400); | 1254 gfx::Rect new_size(0, 0, 400, 400); |
1253 popup_window.owned_window()->SetBounds(new_size); | 1255 popup_window.owned_window()->SetBounds(new_size); |
1254 | 1256 |
1255 EXPECT_EQ(popup_window.top_level_widget()->GetNativeView()->bounds().size(), | 1257 EXPECT_EQ(popup_window.top_level_widget()->GetNativeView()->bounds().size(), |
1256 new_size.size()); | 1258 new_size.size()); |
1257 RunPendingMessages(); | 1259 RunPendingMessages(); |
1258 ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow()); | 1260 ASSERT_NO_FATAL_FAILURE(popup_window.DestroyOwnedWindow()); |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1679 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) { | 1681 TEST_F(WidgetWindowTitleTest, SetWindowTitleChanged_DesktopNativeWidget) { |
1680 // Override to use a DesktopNativeWidget. | 1682 // Override to use a DesktopNativeWidget. |
1681 bool desktop_native_widget = true; | 1683 bool desktop_native_widget = true; |
1682 RunTest(desktop_native_widget); | 1684 RunTest(desktop_native_widget); |
1683 } | 1685 } |
1684 #endif // !OS_CHROMEOS | 1686 #endif // !OS_CHROMEOS |
1685 | 1687 |
1686 // Used by SetTopLevelCorrectly to track calls to OnBeforeWidgetInit(). | 1688 // Used by SetTopLevelCorrectly to track calls to OnBeforeWidgetInit(). |
1687 class VerifyTopLevelDelegate : public TestViewsDelegate { | 1689 class VerifyTopLevelDelegate : public TestViewsDelegate { |
1688 public: | 1690 public: |
1689 VerifyTopLevelDelegate() | 1691 explicit VerifyTopLevelDelegate(ui::ContextFactory* context_factory) |
1690 : on_before_init_called_(false), | 1692 : on_before_init_called_(false), |
1691 is_top_level_(false) { | 1693 is_top_level_(false) { |
| 1694 set_context_factory(context_factory); |
1692 } | 1695 } |
1693 | 1696 |
1694 bool on_before_init_called() const { return on_before_init_called_; } | 1697 bool on_before_init_called() const { return on_before_init_called_; } |
1695 bool is_top_level() const { return is_top_level_; } | 1698 bool is_top_level() const { return is_top_level_; } |
1696 | 1699 |
1697 virtual void OnBeforeWidgetInit( | 1700 virtual void OnBeforeWidgetInit( |
1698 Widget::InitParams* params, | 1701 Widget::InitParams* params, |
1699 internal::NativeWidgetDelegate* delegate) OVERRIDE { | 1702 internal::NativeWidgetDelegate* delegate) OVERRIDE { |
1700 on_before_init_called_ = true; | 1703 on_before_init_called_ = true; |
1701 is_top_level_ = params->top_level; | 1704 is_top_level_ = params->top_level; |
1702 } | 1705 } |
1703 | 1706 |
1704 private: | 1707 private: |
1705 bool on_before_init_called_; | 1708 bool on_before_init_called_; |
1706 bool is_top_level_; | 1709 bool is_top_level_; |
1707 | 1710 |
1708 DISALLOW_COPY_AND_ASSIGN(VerifyTopLevelDelegate); | 1711 DISALLOW_COPY_AND_ASSIGN(VerifyTopLevelDelegate); |
1709 }; | 1712 }; |
1710 | 1713 |
1711 // Verifies |top_level| is correctly passed to | 1714 // Verifies |top_level| is correctly passed to |
1712 // ViewsDelegate::OnBeforeWidgetInit(). | 1715 // ViewsDelegate::OnBeforeWidgetInit(). |
1713 TEST_F(WidgetTest, SetTopLevelCorrectly) { | 1716 TEST_F(WidgetTest, SetTopLevelCorrectly) { |
1714 set_views_delegate(NULL); | 1717 set_views_delegate(NULL); |
1715 VerifyTopLevelDelegate* delegate = new VerifyTopLevelDelegate; | 1718 VerifyTopLevelDelegate* delegate = |
| 1719 new VerifyTopLevelDelegate(context_factory()); |
1716 set_views_delegate(delegate); // ViewsTestBase takes ownership. | 1720 set_views_delegate(delegate); // ViewsTestBase takes ownership. |
1717 scoped_ptr<Widget> widget(new Widget); | 1721 scoped_ptr<Widget> widget(new Widget); |
1718 Widget::InitParams params = | 1722 Widget::InitParams params = |
1719 CreateParams(views::Widget::InitParams::TYPE_POPUP); | 1723 CreateParams(views::Widget::InitParams::TYPE_POPUP); |
1720 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 1724 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
1721 widget->Init(params); | 1725 widget->Init(params); |
1722 EXPECT_TRUE(delegate->on_before_init_called()); | 1726 EXPECT_TRUE(delegate->on_before_init_called()); |
1723 EXPECT_TRUE(delegate->is_top_level()); | 1727 EXPECT_TRUE(delegate->is_top_level()); |
1724 } | 1728 } |
1725 | 1729 |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2463 child_widget.Init(child_params); | 2467 child_widget.Init(child_params); |
2464 child_widget.AddObserver(&observer); | 2468 child_widget.AddObserver(&observer); |
2465 child_widget.Show(); | 2469 child_widget.Show(); |
2466 | 2470 |
2467 parent_widget.CloseNow(); | 2471 parent_widget.CloseNow(); |
2468 } | 2472 } |
2469 #endif | 2473 #endif |
2470 | 2474 |
2471 } // namespace test | 2475 } // namespace test |
2472 } // namespace views | 2476 } // namespace views |
OLD | NEW |