| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "ui/gfx/native_widget_types.h" | 10 #include "ui/gfx/native_widget_types.h" |
| (...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 819 toplevel->CloseNow(); | 819 toplevel->CloseNow(); |
| 820 | 820 |
| 821 // The NativeWidget won't be deleted until after a return to the message loop | 821 // The NativeWidget won't be deleted until after a return to the message loop |
| 822 // so we have to run pending messages before testing the destruction status. | 822 // so we have to run pending messages before testing the destruction status. |
| 823 RunPendingMessages(); | 823 RunPendingMessages(); |
| 824 | 824 |
| 825 EXPECT_TRUE(state.widget_deleted); | 825 EXPECT_TRUE(state.widget_deleted); |
| 826 EXPECT_TRUE(state.native_widget_deleted); | 826 EXPECT_TRUE(state.native_widget_deleted); |
| 827 } | 827 } |
| 828 | 828 |
| 829 // Widget owns its NativeWidget and has a WidgetDelegateView as its contents. |
| 830 TEST_F(WidgetOwnershipTest, |
| 831 Ownership_WidgetOwnsNativeWidgetWithWithWidgetDelegateView) { |
| 832 OwnershipTestState state; |
| 833 |
| 834 WidgetDelegateView* delegate_view = new WidgetDelegateView; |
| 835 |
| 836 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state)); |
| 837 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
| 838 params.native_widget = |
| 839 new OwnershipTestNativeWidgetPlatform(widget.get(), &state); |
| 840 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 841 params.delegate = delegate_view; |
| 842 widget->Init(params); |
| 843 widget->SetContentsView(delegate_view); |
| 844 |
| 845 // Now delete the Widget. There should be no crash or use-after-free. |
| 846 widget.reset(); |
| 847 |
| 848 EXPECT_TRUE(state.widget_deleted); |
| 849 EXPECT_TRUE(state.native_widget_deleted); |
| 850 } |
| 851 |
| 829 //////////////////////////////////////////////////////////////////////////////// | 852 //////////////////////////////////////////////////////////////////////////////// |
| 830 // Widget observer tests. | 853 // Widget observer tests. |
| 831 // | 854 // |
| 832 | 855 |
| 833 class WidgetObserverTest : public WidgetTest, public WidgetObserver { | 856 class WidgetObserverTest : public WidgetTest, public WidgetObserver { |
| 834 public: | 857 public: |
| 835 WidgetObserverTest() | 858 WidgetObserverTest() |
| 836 : active_(NULL), | 859 : active_(NULL), |
| 837 widget_closed_(NULL), | 860 widget_closed_(NULL), |
| 838 widget_activated_(NULL), | 861 widget_activated_(NULL), |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 | 918 |
| 896 const Widget* active() const { return active_; } | 919 const Widget* active() const { return active_; } |
| 897 const Widget* widget_closed() const { return widget_closed_; } | 920 const Widget* widget_closed() const { return widget_closed_; } |
| 898 const Widget* widget_activated() const { return widget_activated_; } | 921 const Widget* widget_activated() const { return widget_activated_; } |
| 899 const Widget* widget_deactivated() const { return widget_deactivated_; } | 922 const Widget* widget_deactivated() const { return widget_deactivated_; } |
| 900 const Widget* widget_shown() const { return widget_shown_; } | 923 const Widget* widget_shown() const { return widget_shown_; } |
| 901 const Widget* widget_hidden() const { return widget_hidden_; } | 924 const Widget* widget_hidden() const { return widget_hidden_; } |
| 902 const Widget* widget_bounds_changed() const { return widget_bounds_changed_; } | 925 const Widget* widget_bounds_changed() const { return widget_bounds_changed_; } |
| 903 | 926 |
| 904 private: | 927 private: |
| 905 | |
| 906 Widget* active_; | 928 Widget* active_; |
| 907 | 929 |
| 908 Widget* widget_closed_; | 930 Widget* widget_closed_; |
| 909 Widget* widget_activated_; | 931 Widget* widget_activated_; |
| 910 Widget* widget_deactivated_; | 932 Widget* widget_deactivated_; |
| 911 Widget* widget_shown_; | 933 Widget* widget_shown_; |
| 912 Widget* widget_hidden_; | 934 Widget* widget_hidden_; |
| 913 Widget* widget_bounds_changed_; | 935 Widget* widget_bounds_changed_; |
| 914 }; | 936 }; |
| 915 | 937 |
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1370 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_BEGIN)); | 1392 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_BEGIN)); |
| 1371 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_UPDATE)); | 1393 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_UPDATE)); |
| 1372 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_END)); | 1394 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_END)); |
| 1373 } | 1395 } |
| 1374 | 1396 |
| 1375 widget->CloseNow(); | 1397 widget->CloseNow(); |
| 1376 } | 1398 } |
| 1377 | 1399 |
| 1378 } // namespace | 1400 } // namespace |
| 1379 } // namespace views | 1401 } // namespace views |
| OLD | NEW |