• 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 "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