1// Copyright 2013 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 ASH_WM_BOOT_SPLASH_SCREEN_CHROMEOS_H_
6#define ASH_WM_BOOT_SPLASH_SCREEN_CHROMEOS_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/memory/scoped_ptr.h"
12#include "base/time/time.h"
13
14namespace aura {
15class RootWindow;
16}
17
18namespace ui {
19class Layer;
20class LayerDelegate;
21}
22
23namespace ash {
24namespace internal {
25
26// BootSplashScreen manages a ui::Layer, stacked at the top of the root layer's
27// children, that displays a copy of the initial contents of the host window.
28// This allows us to continue displaying the Chrome OS boot splash screen (which
29// is displayed before Ash starts) after the compositor has taken over so we can
30// animate the transition between the splash screen and the login screen.
31class BootSplashScreen {
32 public:
33  explicit BootSplashScreen(aura::RootWindow* root_window);
34  ~BootSplashScreen();
35
36  // Begins animating |layer_|'s opacity to 0 over |duration|.
37  void StartHideAnimation(base::TimeDelta duration);
38
39 private:
40  class CopyHostContentLayerDelegate;
41
42  // Copies the host window's content to |layer_|.
43  scoped_ptr<CopyHostContentLayerDelegate> layer_delegate_;
44
45  scoped_ptr<ui::Layer> layer_;
46
47  DISALLOW_COPY_AND_ASSIGN(BootSplashScreen);
48};
49
50}  // namespace internal
51}  // namespace ash
52
53#endif  // ASH_WM_BOOT_SPLASH_SCREEN_CHROMEOS_H_
54