Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: ui/views/widget/widget_unittest.cc

Issue 11953066: Reland 179231 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698