summaryrefslogtreecommitdiffstats
path: root/ash/test/ash_test_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'ash/test/ash_test_helper.h')
-rw-r--r--ash/test/ash_test_helper.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/ash/test/ash_test_helper.h b/ash/test/ash_test_helper.h
new file mode 100644
index 0000000..9d3b25a
--- /dev/null
+++ b/ash/test/ash_test_helper.h
@@ -0,0 +1,71 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_TEST_ASH_TEST_HELPER_H_
+#define ASH_TEST_ASH_TEST_HELPER_H_
+
+#include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
+
+#if defined(OS_WIN)
+#include "ui/base/win/scoped_ole_initializer.h"
+#endif
+
+namespace aura {
+class RootWindow;
+} // namespace aura
+
+namespace base {
+class MessageLoopForUI;
+} // namespace base
+
+namespace ui {
+class ScopedAnimationDurationScaleMode;
+} // namespace ui
+
+namespace ash {
+namespace test {
+
+class TestMetroViewerProcessHost;
+class TestShellDelegate;
+
+// A helper class that does common initialization required for Ash. Creates a
+// root window and an ash::Shell instance with a test delegate.
+class AshTestHelper {
+ public:
+ explicit AshTestHelper(base::MessageLoopForUI* message_loop);
+ ~AshTestHelper();
+
+ // Creates the ash::Shell and performs associated initialization.
+ void SetUp();
+
+ // Destroys the ash::Shell and performs associated cleanup.
+ void TearDown();
+
+ // Returns a RootWindow. Usually this is the active RootWindow, but that
+ // method can return NULL sometimes, and in those cases, we fall back on the
+ // primary RootWindow.
+ aura::RootWindow* CurrentContext();
+
+ void RunAllPendingInMessageLoop();
+
+ base::MessageLoopForUI* message_loop() { return message_loop_; }
+ TestShellDelegate* test_shell_delegate() { return test_shell_delegate_; }
+
+ private:
+ base::MessageLoopForUI* message_loop_; // Not owned.
+ TestShellDelegate* test_shell_delegate_; // Owned by ash::Shell.
+ scoped_ptr<ui::ScopedAnimationDurationScaleMode> zero_duration_mode_;
+#if defined(OS_WIN)
+ scoped_ptr<TestMetroViewerProcessHost> metro_viewer_host_;
+ ui::ScopedOleInitializer ole_initializer_;
+#endif
+
+ DISALLOW_COPY_AND_ASSIGN(AshTestHelper);
+};
+
+} // namespace test
+} // namespace ash
+
+#endif // ASH_TEST_ASH_TEST_HELPER_H_