1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef ATHENA_TEST_ATHENA_TEST_HELPER_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define ATHENA_TEST_ATHENA_TEST_HELPER_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/basictypes.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/aura/window_tree_host.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace base {
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class MessageLoopForUI;
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Thread;
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace ui {
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ContextFactory;
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ScopedAnimationDurationScaleMode;
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace aura {
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Window;
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class TestScreen;
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class WindowTreeHost;
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace client {
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class FocusClient;
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace wm {
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class InputMethodEventFilter;
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace athena {
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace test {
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// A helper class owned by tests that does common initialization required for
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Athena use. This class creates a root window with clients and other objects
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// that are necessary to run test on Athena.
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class AthenaTestHelper {
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  explicit AthenaTestHelper(base::MessageLoopForUI* message_loop);
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ~AthenaTestHelper();
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Creates and initializes (shows and sizes) the RootWindow for use in tests.
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void SetUp(ui::ContextFactory* context_factory);
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Clean up objects that are created for tests. This also deletes the Env
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // object.
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void TearDown();
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Flushes message loop.
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void RunAllPendingInMessageLoop();
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  aura::Window* GetRootWindow();
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  aura::WindowTreeHost* GetHost();
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool setup_called_;
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool teardown_called_;
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  base::MessageLoopForUI* message_loop_;
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<ui::ScopedAnimationDurationScaleMode> zero_duration_mode_;
6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  scoped_ptr<base::Thread> file_thread_;
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(AthenaTestHelper);
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace test
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace athena
73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // ATHENA_TEST_ATHENA_TEST_HELPER_H_
75