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