- add sources.
[platform/framework/web/crosswalk.git] / src / ui / views / test / views_test_base.h
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_