| 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/base/events/event_utils.h" | 10 #include "ui/base/events/event_utils.h" |
| (...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 toplevel->CloseNow(); | 820 toplevel->CloseNow(); |
| 821 | 821 |
| 822 // The NativeWidget won't be deleted until after a return to the message loop | 822 // The NativeWidget won't be deleted until after a return to the message loop |
| 823 // so we have to run pending messages before testing the destruction status. | 823 // so we have to run pending messages before testing the destruction status. |
| 824 RunPendingMessages(); | 824 RunPendingMessages(); |
| 825 | 825 |
| 826 EXPECT_TRUE(state.widget_deleted); | 826 EXPECT_TRUE(state.widget_deleted); |
| 827 EXPECT_TRUE(state.native_widget_deleted); | 827 EXPECT_TRUE(state.native_widget_deleted); |
| 828 } | 828 } |
| 829 | 829 |
| 830 // Widget owns its NativeWidget and has a WidgetDelegateView as its contents. |
| 831 TEST_F(WidgetOwnershipTest, |
| 832 Ownership_WidgetOwnsNativeWidgetWithWithWidgetDelegateView) { |
| 833 OwnershipTestState state; |
| 834 |
| 835 WidgetDelegateView* delegate_view = new WidgetDelegateView; |
| 836 |
| 837 scoped_ptr<Widget> widget(new OwnershipTestWidget(&state)); |
| 838 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
| 839 params.native_widget = |
| 840 new OwnershipTestNativeWidgetPlatform(widget.get(), &state); |
| 841 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 842 params.delegate = delegate_view; |
| 843 widget->Init(params); |
| 844 widget->SetContentsView(delegate_view); |
| 845 |
| 846 // Now delete the Widget. There should be no crash or use-after-free. |
| 847 widget.reset(); |
| 848 |
| 849 EXPECT_TRUE(state.widget_deleted); |
| 850 EXPECT_TRUE(state.native_widget_deleted); |
| 851 } |
| 852 |
| 830 //////////////////////////////////////////////////////////////////////////////// | 853 //////////////////////////////////////////////////////////////////////////////// |
| 831 // Widget observer tests. | 854 // Widget observer tests. |
| 832 // | 855 // |
| 833 | 856 |
| 834 class WidgetObserverTest : public WidgetTest, public WidgetObserver { | 857 class WidgetObserverTest : public WidgetTest, public WidgetObserver { |
| 835 public: | 858 public: |
| 836 WidgetObserverTest() | 859 WidgetObserverTest() |
| 837 : active_(NULL), | 860 : active_(NULL), |
| 838 widget_closed_(NULL), | 861 widget_closed_(NULL), |
| 839 widget_activated_(NULL), | 862 widget_activated_(NULL), |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 | 919 |
| 897 const Widget* active() const { return active_; } | 920 const Widget* active() const { return active_; } |
| 898 const Widget* widget_closed() const { return widget_closed_; } | 921 const Widget* widget_closed() const { return widget_closed_; } |
| 899 const Widget* widget_activated() const { return widget_activated_; } | 922 const Widget* widget_activated() const { return widget_activated_; } |
| 900 const Widget* widget_deactivated() const { return widget_deactivated_; } | 923 const Widget* widget_deactivated() const { return widget_deactivated_; } |
| 901 const Widget* widget_shown() const { return widget_shown_; } | 924 const Widget* widget_shown() const { return widget_shown_; } |
| 902 const Widget* widget_hidden() const { return widget_hidden_; } | 925 const Widget* widget_hidden() const { return widget_hidden_; } |
| 903 const Widget* widget_bounds_changed() const { return widget_bounds_changed_; } | 926 const Widget* widget_bounds_changed() const { return widget_bounds_changed_; } |
| 904 | 927 |
| 905 private: | 928 private: |
| 906 | |
| 907 Widget* active_; | 929 Widget* active_; |
| 908 | 930 |
| 909 Widget* widget_closed_; | 931 Widget* widget_closed_; |
| 910 Widget* widget_activated_; | 932 Widget* widget_activated_; |
| 911 Widget* widget_deactivated_; | 933 Widget* widget_deactivated_; |
| 912 Widget* widget_shown_; | 934 Widget* widget_shown_; |
| 913 Widget* widget_hidden_; | 935 Widget* widget_hidden_; |
| 914 Widget* widget_bounds_changed_; | 936 Widget* widget_bounds_changed_; |
| 915 }; | 937 }; |
| 916 | 938 |
| (...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1383 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_BEGIN)); | 1405 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_BEGIN)); |
| 1384 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_UPDATE)); | 1406 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_UPDATE)); |
| 1385 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_END)); | 1407 EXPECT_EQ(1, scroll_view->GetEventCount(ui::ET_GESTURE_SCROLL_END)); |
| 1386 } | 1408 } |
| 1387 | 1409 |
| 1388 widget->CloseNow(); | 1410 widget->CloseNow(); |
| 1389 } | 1411 } |
| 1390 | 1412 |
| 1391 } // namespace | 1413 } // namespace |
| 1392 } // namespace views | 1414 } // namespace views |
| OLD | NEW |