OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 #include "athena/test/base/athena_test_helper.h" | |
6 | |
7 #include "athena/env/public/athena_env.h" | |
8 #include "athena/extensions/public/apps_search_controller_factory.h" | |
9 #include "athena/extensions/public/extensions_delegate.h" | |
10 #include "athena/home/public/search_controller_factory.h" | |
11 #include "athena/main/public/athena_launcher.h" | |
12 #include "athena/test/base/sample_activity_factory.h" | |
13 #include "athena/test/base/test_app_model_builder.h" | |
14 #include "base/message_loop/message_loop.h" | |
15 #include "base/run_loop.h" | |
16 #include "base/threading/thread.h" | |
17 #include "chromeos/dbus/dbus_thread_manager.h" | |
18 #include "ui/aura/env.h" | |
19 #include "ui/aura/input_state_lookup.h" | |
20 #include "ui/aura/test/env_test_helper.h" | |
21 #include "ui/base/ime/input_method_initializer.h" | |
22 #include "ui/compositor/scoped_animation_duration_scale_mode.h" | |
23 #include "ui/wm/core/focus_controller.h" | |
24 #include "ui/wm/core/input_method_event_filter.h" | |
25 | |
26 #if defined(USE_X11) | |
27 #include "ui/base/x/x11_util.h" | |
28 #endif | |
29 | |
30 namespace athena { | |
31 namespace test { | |
32 | |
33 AthenaTestHelper::AthenaTestHelper(base::MessageLoopForUI* message_loop) | |
34 : setup_called_(false), teardown_called_(false) { | |
35 DCHECK(message_loop); | |
36 message_loop_ = message_loop; | |
37 // Disable animations during tests. | |
38 zero_duration_mode_.reset(new ui::ScopedAnimationDurationScaleMode( | |
39 ui::ScopedAnimationDurationScaleMode::ZERO_DURATION)); | |
40 } | |
41 | |
42 AthenaTestHelper::~AthenaTestHelper() { | |
43 CHECK(setup_called_) << "AthenaTestHelper::SetUp() never called."; | |
44 CHECK(teardown_called_) << "AthenaTestHelper::TearDown() never called."; | |
45 } | |
46 | |
47 void AthenaTestHelper::SetUp(ui::ContextFactory* context_factory) { | |
48 setup_called_ = true; | |
49 file_thread_.reset(new base::Thread("FileThread")); | |
50 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0); | |
51 file_thread_->StartWithOptions(options); | |
52 | |
53 chromeos::DBusThreadManager::Initialize(); | |
54 ui::InitializeInputMethodForTesting(); | |
55 aura::Env::CreateInstance(true); | |
56 aura::Env::GetInstance()->set_context_factory(context_factory); | |
57 | |
58 // Unit tests generally don't want to query the system, rather use the state | |
59 // from RootWindow. | |
60 aura::test::EnvTestHelper(aura::Env::GetInstance()) | |
61 .SetInputStateLookup(scoped_ptr<aura::InputStateLookup>()); | |
62 | |
63 // TODO(oshima): Use a BlockingPool task runner. | |
64 athena::StartAthenaEnv(file_thread_->message_loop_proxy()); | |
65 athena::ExtensionsDelegate::CreateExtensionsDelegateForTest(); | |
66 athena::StartAthenaSession(new SampleActivityFactory(), | |
67 make_scoped_ptr(new TestAppModelBuilder()), | |
68 CreateSearchControllerFactory(nullptr)); | |
69 } | |
70 | |
71 void AthenaTestHelper::TearDown() { | |
72 teardown_called_ = true; | |
73 | |
74 athena::ShutdownAthena(); | |
75 aura::Env::DeleteInstance(); | |
76 | |
77 #if defined(USE_X11) | |
78 ui::test::ResetXCursorCache(); | |
79 #endif | |
80 | |
81 ui::ShutdownInputMethodForTesting(); | |
82 chromeos::DBusThreadManager::Shutdown(); | |
83 } | |
84 | |
85 aura::Window* AthenaTestHelper::GetRootWindow() { | |
86 return GetHost()->window(); | |
87 } | |
88 | |
89 aura::WindowTreeHost* AthenaTestHelper::GetHost() { | |
90 return AthenaEnv::Get()->GetHost(); | |
91 } | |
92 | |
93 void AthenaTestHelper::RunAllPendingInMessageLoop() { | |
94 // TODO(jbates) crbug.com/134753 Find quitters of this RunLoop and have them | |
95 // use run_loop.QuitClosure(). | |
96 base::RunLoop run_loop; | |
97 run_loop.RunUntilIdle(); | |
98 } | |
99 | |
100 } // namespace test | |
101 } // namespace athena | |
OLD | NEW |