• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
views_delegate()43   TestViewsDelegate& views_delegate() const { return *views_delegate_.get(); }
44 
set_views_delegate(TestViewsDelegate * views_delegate)45   void set_views_delegate(TestViewsDelegate* views_delegate) {
46     views_delegate_.reset(views_delegate);
47   }
48 
message_loop()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