// 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_
