error_screen_actor.h revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
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#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_ACTOR_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_ACTOR_H_
7
8#include "chrome/browser/chromeos/cros/network_constants.h"
9#include "chrome/browser/chromeos/login/screens/error_screen.h"
10#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
11
12namespace base {
13class DictionaryValue;
14}
15
16namespace chromeos {
17
18class ErrorScreenActor {
19 public:
20  // Possible network error reasons.
21  enum ErrorReason {
22    ERROR_REASON_PROXY_AUTH_CANCELLED = 0,
23    ERROR_REASON_PROXY_AUTH_SUPPLIED,
24    ERROR_REASON_PROXY_CONNECTION_FAILED,
25    ERROR_REASON_PROXY_CONFIG_CHANGED,
26    ERROR_REASON_LOADING_TIMEOUT,
27    ERROR_REASON_PORTAL_DETECTED,
28    // Reason for a case when default network has changed.
29    ERROR_REASON_NETWORK_STATE_CHANGED,
30    // Reason for a case when JS side requires error screen update.
31    ERROR_REASON_UPDATE,
32    ERROR_REASON_FRAME_ERROR
33  };
34
35  ErrorScreenActor();
36  virtual ~ErrorScreenActor();
37
38  ErrorScreen::UIState ui_state() const { return ui_state_; }
39  ErrorScreen::ErrorState error_state() const { return error_state_; }
40
41  // Returns id of the screen behind error screen ("caller" screen).
42  // Returns OobeUI::SCREEN_UNKNOWN if error screen isn't the current
43  // screen.
44  OobeUI::Screen parent_screen() const { return parent_screen_; }
45
46  // Shows the screen.
47  virtual void Show(OobeDisplay::Screen parent_screen,
48                    base::DictionaryValue* params) = 0;
49
50  // Hides the screen.
51  virtual void Hide() = 0;
52
53  // Initializes captive portal dialog and shows that if needed.
54  virtual void FixCaptivePortal() = 0;
55
56  // Shows captive portal dialog.
57  virtual void ShowCaptivePortal() = 0;
58
59  // Hides captive portal dialog.
60  virtual void HideCaptivePortal() = 0;
61
62  virtual void SetUIState(ErrorScreen::UIState ui_state) = 0;
63  virtual void SetErrorState(ErrorScreen::ErrorState error_state,
64                             const std::string& network) = 0;
65
66  virtual void AllowGuestSignin(bool allowed) = 0;
67  virtual void AllowOfflineLogin(bool allowed) = 0;
68
69 protected:
70  ErrorScreen::UIState ui_state_;
71  ErrorScreen::ErrorState error_state_;
72  OobeUI::Screen parent_screen_;
73};
74
75}  // namespace chromeos
76
77#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_ACTOR_H_
78