summaryrefslogtreecommitdiff
path: root/chromium/ash/wm/boot_splash_screen_chromeos.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/wm/boot_splash_screen_chromeos.h')
-rw-r--r--chromium/ash/wm/boot_splash_screen_chromeos.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/chromium/ash/wm/boot_splash_screen_chromeos.h b/chromium/ash/wm/boot_splash_screen_chromeos.h
new file mode 100644
index 00000000000..e844275ad5f
--- /dev/null
+++ b/chromium/ash/wm/boot_splash_screen_chromeos.h
@@ -0,0 +1,53 @@
+// 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_WM_BOOT_SPLASH_SCREEN_CHROMEOS_H_
+#define ASH_WM_BOOT_SPLASH_SCREEN_CHROMEOS_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/time/time.h"
+
+namespace aura {
+class RootWindow;
+}
+
+namespace ui {
+class Layer;
+class LayerDelegate;
+}
+
+namespace ash {
+namespace internal {
+
+// BootSplashScreen manages a ui::Layer, stacked at the top of the root layer's
+// children, that displays a copy of the initial contents of the host window.
+// This allows us to continue displaying the Chrome OS boot splash screen (which
+// is displayed before Ash starts) after the compositor has taken over so we can
+// animate the transition between the splash screen and the login screen.
+class BootSplashScreen {
+ public:
+ explicit BootSplashScreen(aura::RootWindow* root_window);
+ ~BootSplashScreen();
+
+ // Begins animating |layer_|'s opacity to 0 over |duration|.
+ void StartHideAnimation(base::TimeDelta duration);
+
+ private:
+ class CopyHostContentLayerDelegate;
+
+ // Copies the host window's content to |layer_|.
+ scoped_ptr<CopyHostContentLayerDelegate> layer_delegate_;
+
+ scoped_ptr<ui::Layer> layer_;
+
+ DISALLOW_COPY_AND_ASSIGN(BootSplashScreen);
+};
+
+} // namespace internal
+} // namespace ash
+
+#endif // ASH_WM_BOOT_SPLASH_SCREEN_CHROMEOS_H_