error_screen.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright (c) 2012 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/screens/error_screen.h"
6
7#include "chrome/browser/chromeos/login/screens/error_screen_actor.h"
8#include "chrome/browser/chromeos/login/wizard_controller.h"
9#include "chrome/browser/chromeos/net/network_portal_detector.h"
10
11namespace chromeos {
12
13ErrorScreen::ErrorScreen(ScreenObserver* screen_observer,
14                         ErrorScreenActor* actor)
15    : WizardScreen(screen_observer),
16      actor_(actor),
17      parent_screen_(OobeDisplay::SCREEN_UNKNOWN) {
18  DCHECK(actor_);
19  actor_->SetDelegate(this);
20  AddObserver(NetworkPortalDetector::Get());
21}
22
23ErrorScreen::~ErrorScreen() {
24  actor_->SetDelegate(NULL);
25  RemoveObserver(NetworkPortalDetector::Get());
26}
27
28void ErrorScreen::AddObserver(Observer* observer) {
29  if (observer)
30    observers_.AddObserver(observer);
31}
32
33void ErrorScreen::RemoveObserver(Observer* observer) {
34  if (observer)
35    observers_.RemoveObserver(observer);
36}
37
38void ErrorScreen::PrepareToShow() {
39}
40
41void ErrorScreen::Show() {
42  DCHECK(actor_);
43  actor_->Show(parent_screen(), NULL);
44}
45
46void ErrorScreen::Hide() {
47  DCHECK(actor_);
48  actor_->Hide();
49}
50
51std::string ErrorScreen::GetName() const {
52  return WizardController::kErrorScreenName;
53}
54
55void ErrorScreen::OnErrorShow() {
56  FOR_EACH_OBSERVER(Observer, observers_, OnErrorScreenShow());
57}
58
59void ErrorScreen::OnErrorHide() {
60  FOR_EACH_OBSERVER(Observer, observers_, OnErrorScreenHide());
61}
62
63void ErrorScreen::FixCaptivePortal() {
64  DCHECK(actor_);
65  actor_->FixCaptivePortal();
66}
67
68void ErrorScreen::ShowCaptivePortal() {
69  DCHECK(actor_);
70  actor_->ShowCaptivePortal();
71}
72
73void ErrorScreen::HideCaptivePortal() {
74  DCHECK(actor_);
75  actor_->HideCaptivePortal();
76}
77
78void ErrorScreen::SetUIState(UIState ui_state) {
79  DCHECK(actor_);
80  actor_->SetUIState(ui_state);
81}
82
83ErrorScreen::UIState ErrorScreen::GetUIState() const {
84  DCHECK(actor_);
85  return actor_->ui_state();
86}
87
88void ErrorScreen::SetErrorState(ErrorState error_state,
89                                const std::string& network) {
90  DCHECK(actor_);
91  actor_->SetErrorState(error_state, network);
92}
93
94void ErrorScreen::ShowConnectingIndicator(bool show) {
95  DCHECK(actor_);
96  actor_->ShowConnectingIndicator(show);
97}
98
99}  // namespace chromeos
100