1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_DISPLAY_HOST_H_
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_DISPLAY_HOST_H_
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <string>
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/login/background_view.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/customization_document.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/chromeos/login/login_display.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "googleurl/src/gurl.h"
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ui/gfx/native_widget_types.h"
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos {
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// An interface that defines OOBE/login screen host.
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Host encapsulates implementation specific background window (views/WebUI),
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// OOBE/login controllers, views/WebUI UI implementation (such as LoginDisplay).
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass LoginDisplayHost {
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual ~LoginDisplayHost() {}
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Creates UI implementation specific login display instance (views/WebUI).
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual LoginDisplay* CreateLoginDisplay(
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      LoginDisplay::Delegate* delegate) const = 0;
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Returns corresponding native window.
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // TODO(nkostylev): Might be refactored, move to views-specific code.
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual gfx::NativeWindow GetNativeWindow() const = 0;
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Called when browsing session starts so
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // LoginDisplayHost instance may delete itself.
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void OnSessionStart() = 0;
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // TODO(nkostylev): Refactor enum.
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Sets current step on OOBE progress bar.
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetOobeProgress(BackgroundView::LoginStep step) = 0;
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Toggles OOBE progress bar visibility, the bar is hidden by default.
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetOobeProgressBarVisible(bool visible) = 0;
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Enable/disable shutdown button.
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetShutdownButtonEnabled(bool enable) = 0;
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Toggles whether status area is enabled.
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetStatusAreaEnabled(bool enable) = 0;
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Toggles status area visibility.
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetStatusAreaVisible(bool visible) = 0;
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Creates and shows a background window.
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ShowBackground() = 0;
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Starts out-of-box-experience flow or shows other screen handled by
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Wizard controller i.e. camera, recovery.
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // One could specify start screen with |first_screen_name|.
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void StartWizard(
61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& first_screen_name,
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const GURL& start_url) = 0;
63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Starts sign in screen.
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void StartSignInScreen() = 0;
66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}  // namespace chromeos
69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_DISPLAY_HOST_H_
71