1// Copyright (c) 2011 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#include "chrome/browser/chromeos/login/views_login_display_host.h"
6
7#include "chrome/browser/chromeos/login/views_login_display.h"
8#include "chrome/browser/chromeos/login/wizard_accessibility_helper.h"
9
10namespace chromeos {
11
12// ViewsLoginDisplayHost -------------------------------------------------------
13
14ViewsLoginDisplayHost::ViewsLoginDisplayHost(const gfx::Rect& background_bounds)
15    : BaseLoginDisplayHost(background_bounds),
16      background_view_(NULL),
17      background_window_(NULL) {
18}
19
20ViewsLoginDisplayHost::~ViewsLoginDisplayHost() {
21  if (background_window_)
22    background_window_->Close();
23}
24
25// LoginDisplayHost implementation -----------------------------------------
26
27LoginDisplay* ViewsLoginDisplayHost::CreateLoginDisplay(
28    LoginDisplay::Delegate* delegate) const {
29  chromeos::WizardAccessibilityHelper::GetInstance()->Init();
30  return new ViewsLoginDisplay(delegate, background_bounds());
31}
32
33gfx::NativeWindow ViewsLoginDisplayHost::GetNativeWindow() const {
34  if (background_view_)
35    return background_view_->GetNativeWindow();
36  else
37    return NULL;
38}
39
40void ViewsLoginDisplayHost::SetOobeProgress(BackgroundView::LoginStep step) {
41  if (background_view_)
42    background_view_->SetOobeProgress(step);
43}
44
45void ViewsLoginDisplayHost::SetOobeProgressBarVisible(bool visible) {
46  if (background_view_)
47    background_view_->SetOobeProgressBarVisible(visible);
48}
49
50void ViewsLoginDisplayHost::SetShutdownButtonEnabled(bool enable) {
51  if (background_view_)
52    background_view_->EnableShutdownButton(enable);
53}
54
55void ViewsLoginDisplayHost::SetStatusAreaEnabled(bool enable) {
56  if (background_view_)
57    background_view_->SetStatusAreaEnabled(enable);
58}
59
60void ViewsLoginDisplayHost::SetStatusAreaVisible(bool visible) {
61  if (background_view_)
62    background_view_->SetStatusAreaVisible(visible);
63}
64
65void ViewsLoginDisplayHost::ShowBackground() {
66  if (background_window_) {
67    background_window_->Show();
68    return;
69  }
70  background_window_ =
71      BackgroundView::CreateWindowContainingView(background_bounds(),
72                                                 GURL(),
73                                                 &background_view_);
74  background_window_->Show();
75}
76
77}  // namespace chromeos
78
79