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 3 // found in the LICENSE file. 4 5 #ifndef UI_VIEWS_TEST_VIEWS_TEST_BASE_H_ 6 #define UI_VIEWS_TEST_VIEWS_TEST_BASE_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "base/message_loop/message_loop.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/platform_test.h" 12 #include "ui/views/test/test_views_delegate.h" 13 14 #if defined(OS_WIN) 15 #include "ui/base/win/scoped_ole_initializer.h" 16 #endif 17 18 namespace views { 19 20 class ViewsTestHelper; 21 22 // A base class for views unit test. It creates a message loop necessary 23 // to drive UI events and takes care of OLE initialization for windows. 24 class ViewsTestBase : public PlatformTest { 25 public: 26 ViewsTestBase(); 27 virtual ~ViewsTestBase(); 28 29 // testing::Test: 30 virtual void SetUp() OVERRIDE; 31 virtual void TearDown() OVERRIDE; 32 33 void RunPendingMessages(); 34 35 // Creates a widget of |type| with any platform specific data for use in 36 // cross-platform tests. 37 Widget::InitParams CreateParams(Widget::InitParams::Type type); 38 39 protected: views_delegate()40 TestViewsDelegate& views_delegate() const { return *views_delegate_.get(); } 41 set_views_delegate(TestViewsDelegate * views_delegate)42 void set_views_delegate(TestViewsDelegate* views_delegate) { 43 views_delegate_.reset(views_delegate); 44 } 45 message_loop()46 base::MessageLoopForUI* message_loop() { return &message_loop_; } 47 48 // Returns a context view. In aura builds, this will be the 49 // RootWindow. Everywhere else, NULL. 50 gfx::NativeWindow GetContext(); 51 52 private: 53 base::MessageLoopForUI message_loop_; 54 scoped_ptr<TestViewsDelegate> views_delegate_; 55 scoped_ptr<ViewsTestHelper> test_helper_; 56 bool setup_called_; 57 bool teardown_called_; 58 59 #if defined(OS_WIN) 60 ui::ScopedOleInitializer ole_initializer_; 61 #endif 62 63 DISALLOW_COPY_AND_ASSIGN(ViewsTestBase); 64 }; 65 66 } // namespace views 67 68 #endif // UI_VIEWS_TEST_VIEWS_TEST_BASE_H_ 69