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_AURA_TEST_AURA_TEST_HELPER_H_
6#define UI_AURA_TEST_AURA_TEST_HELPER_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "ui/aura/window_event_dispatcher.h"
11#include "ui/aura/window_tree_host.h"
12
13namespace base {
14class MessageLoopForUI;
15}
16
17namespace ui {
18class ContextFactory;
19class InputMethod;
20class ScopedAnimationDurationScaleMode;
21}
22
23namespace aura {
24class TestScreen;
25namespace client {
26class DefaultCaptureClient;
27class FocusClient;
28}
29namespace test {
30class TestWindowTreeClient;
31
32// A helper class owned by tests that does common initialization required for
33// Aura use. This class creates a root window with clients and other objects
34// that are necessary to run test on Aura.
35class AuraTestHelper {
36 public:
37  explicit AuraTestHelper(base::MessageLoopForUI* message_loop);
38  ~AuraTestHelper();
39
40  // Creates and initializes (shows and sizes) the RootWindow for use in tests.
41  void SetUp(ui::ContextFactory* context_factory);
42
43  // Clean up objects that are created for tests. This also deletes the Env
44  // object.
45  void TearDown();
46
47  // Flushes message loop.
48  void RunAllPendingInMessageLoop();
49
50  Window* root_window() { return host_->window(); }
51  ui::EventProcessor* event_processor() { return host_->event_processor(); }
52  WindowTreeHost* host() { return host_.get(); }
53
54  TestScreen* test_screen() { return test_screen_.get(); }
55
56 private:
57  base::MessageLoopForUI* message_loop_;
58  bool setup_called_;
59  bool teardown_called_;
60  bool owns_host_;
61  scoped_ptr<WindowTreeHost> host_;
62  scoped_ptr<TestWindowTreeClient> stacking_client_;
63  scoped_ptr<client::DefaultCaptureClient> capture_client_;
64  scoped_ptr<ui::InputMethod> test_input_method_;
65  scoped_ptr<client::FocusClient> focus_client_;
66  scoped_ptr<TestScreen> test_screen_;
67  scoped_ptr<ui::ScopedAnimationDurationScaleMode> zero_duration_mode_;
68
69  DISALLOW_COPY_AND_ASSIGN(AuraTestHelper);
70};
71
72}  // namespace test
73}  // namespace aura
74
75#endif  // UI_AURA_TEST_AURA_TEST_HELPER_H_
76