• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 <string>
9 
10 #include "base/basictypes.h"
11 #include "chrome/browser/chromeos/login/screens/error_screen.h"
12 #include "chrome/browser/chromeos/login/screens/error_screen_actor_delegate.h"
13 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
14 
15 namespace base {
16 class DictionaryValue;
17 }
18 
19 namespace chromeos {
20 
21 class ErrorScreenActor {
22  public:
23   // Possible network error reasons.
24   enum ErrorReason {
25     ERROR_REASON_PROXY_AUTH_CANCELLED = 0,
26     ERROR_REASON_PROXY_AUTH_SUPPLIED,
27     ERROR_REASON_PROXY_CONNECTION_FAILED,
28     ERROR_REASON_PROXY_CONFIG_CHANGED,
29     ERROR_REASON_LOADING_TIMEOUT,
30     ERROR_REASON_PORTAL_DETECTED,
31     // Reason for a case when default network has changed.
32     ERROR_REASON_NETWORK_STATE_CHANGED,
33     // Reason for a case when JS side requires error screen update.
34     ERROR_REASON_UPDATE,
35     ERROR_REASON_FRAME_ERROR
36   };
37 
38   ErrorScreenActor();
39   virtual ~ErrorScreenActor();
40 
ui_state()41   ErrorScreen::UIState ui_state() const { return ui_state_; }
error_state()42   ErrorScreen::ErrorState error_state() const { return error_state_; }
43 
44   // Returns id of the screen behind error screen ("caller" screen).
45   // Returns OobeUI::SCREEN_UNKNOWN if error screen isn't the current
46   // screen.
parent_screen()47   OobeUI::Screen parent_screen() const { return parent_screen_; }
48 
49   // Sets screen this actor belongs to.
50   virtual void SetDelegate(ErrorScreenActorDelegate* delegate) = 0;
51 
52   // Shows the screen.
53   virtual void Show(OobeDisplay::Screen parent_screen,
54                     base::DictionaryValue* params) = 0;
55 
56   // Hides the screen.
57   virtual void Hide() = 0;
58 
59   // Initializes captive portal dialog and shows that if needed.
60   virtual void FixCaptivePortal() = 0;
61 
62   // Shows captive portal dialog.
63   virtual void ShowCaptivePortal() = 0;
64 
65   // Hides captive portal dialog.
66   virtual void HideCaptivePortal() = 0;
67 
68   virtual void SetUIState(ErrorScreen::UIState ui_state) = 0;
69   virtual void SetErrorState(ErrorScreen::ErrorState error_state,
70                              const std::string& network) = 0;
71 
72   virtual void AllowGuestSignin(bool allowed) = 0;
73   virtual void AllowOfflineLogin(bool allowed) = 0;
74 
75   virtual void ShowConnectingIndicator(bool show) = 0;
76 
77   static const char* ErrorReasonString(ErrorReason reason);
78 
79  protected:
80   ErrorScreen::UIState ui_state_;
81   ErrorScreen::ErrorState error_state_;
82   std::string network_;
83   bool guest_signin_allowed_;
84   bool offline_login_allowed_;
85   bool show_connecting_indicator_;
86 
87   OobeUI::Screen parent_screen_;
88 
89   DISALLOW_COPY_AND_ASSIGN(ErrorScreenActor);
90 };
91 
92 }  // namespace chromeos
93 
94 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_ACTOR_H_
95