| 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 |